Bazel: макрос testng

Я пытаюсь создать макрос в Bazel, чтобы обернуть java_test для запуска testng, однако у меня возникают проблемы с передачей TestNG имени файла

До сих пор у меня есть

load("@bazel_skylib//:lib.bzl", "paths")

def java_testng(file, deps=[], **kwargs):
  native.java_test(
    name = paths.split_extension(file)[0],
    srcs = [file],
    use_testrunner=False,
    main_class='org.testng.TestNG',
    deps = [
        "//third_party:org_testng_testng"
    ] + deps,
    args=[file],
    **kwargs
  )

Однако args кажется несуществующим файлом запуска. Помощь оценена по правильному значению для args

Вот пример использования, который я хотел бы

java_testng(
    file = "SomeFakeTest.java",
    deps = [
        "//:resources",
        "//third_party:com_fasterxml_jackson_core_jackson_databind",
        "//third_party:org_assertj_assertj_core",
    ],
)

person Setheron    schedule 08.11.2017    source источник
comment
Я также пытался создать java_library раньше   -  person Setheron    schedule 08.11.2017


Ответы (2)


Вот решение, которое я придумал

load("@bazel_skylib//:lib.bzl", "paths")

def java_testng(file, deps=[], size="small", **kwargs):

  native.java_library(
    name = paths.split_extension(file)[0] + "-lib",
    deps = [
        "//third_party:org_testng_testng"
    ] + deps,
    srcs = [file]
  )

  native.java_test(
    name = paths.split_extension(file)[0],
    use_testrunner=False,
    main_class='org.testng.TestNG',
    runtime_deps = [
        "//third_party:org_testng_testng",
        paths.split_extension(file)[0] + "-lib"
    ],
    data = [file],
    size = size,
    args=["-testclass $(location " + file + ")"],
    **kwargs
  )
person Setheron    schedule 08.11.2017

Я не знаю, почему вы использовали макрос, я могу вызвать testng без него. Смотрите мое решение ниже:

  • Я создаю банку своей программы (используя процессор аннотаций)
  • Я создаю свою тестовую банку (используя процессор аннотаций)
  • Я вызываю testng через java_test().

Единственное, что я не понял: как не жестко кодировать "libmy-model-test-lib.jar"

    java_library(
        name = "my-model",
        srcs = glob(["src/main/java/**/*.java"]),
        resources = glob(["src/main/resources/**"]),

        deps = [ 
            "@commons_logging_jar//jar",
            ":lombok", 
            ":mysema_query", 
            ...
        ], 
    ) 

    java_library(
    name = "my-model-test-lib",
    srcs = glob(["src/test/java/**/*.java"]),
    deps = [ 
            "@org_hamcrest_core_jar//jar",
            "@commons_logging_jar//jar",
            ":lombok", 
            ":mysema_query", 
            ...
            "@assertj_jar//jar",
            "@mockito_jar//jar",
            "@testng_jar//jar",
    ], 
    ) 

    java_test(
    name = "AllTests",
    size = "small",
    runtime_deps = [
        ":my-model-test-lib",
        ":my-model",

        "@org_jboss_logging_jar//jar",
        "@org_objenesis_jar//jar",
        "@com_beust_jcommander//jar",
    ],
    use_testrunner=False,
    main_class='org.testng.TestNG',
    args=['-testjar','libmy-model-test-lib.jar','-verbose','2'],
    )

    java_plugin(
    name = "lombok_plugin", 
    processor_class = "lombok.launch.AnnotationProcessorHider$AnnotationProcessor", 
    deps = ["@lombok_jar//jar"], 
    ) 

    java_library(
    name = "lombok", 
    exports = ["@lombok_jar//jar"], 
    exported_plugins = [":lombok_plugin"], 
    ) 



    java_plugin(
    name = "mysema_query_plugin",
    processor_class = "com.mysema.query.apt.jpa.JPAAnnotationProcessor",
    deps = [
        "@querydsl_apt_jar//jar",
        "@mysema_codegen_jar//jar",
        "@javax_persistence_jar//jar",
        "@querydsl_codegen_jar//jar",
        "@guava_jar//jar",
        "@querydsl_core_jar//jar",
        "@javax_inject_jar//jar",
    ],
    )

    java_library(
    name = "mysema_query",
    exports = ["@querydsl_apt_jar//jar"],
    exported_plugins = [":mysema_query_plugin"],
    )



    java_plugin(
    name = "mockito_plugin", 
    processor_class = "",
    deps = ["@mockito_jar//jar"], 
    ) 

    java_library(
    name = "mockito", 
    exports = ["@mockito_jar//jar"], 
    exported_plugins = [":mockito_plugin"], 
    ) 
person Nicolas Zin    schedule 24.04.2018