Bazel:testng宏

Bazel:testng宏,bazel,build-tools,Bazel,Build Tools,我试图在Bazel中创建一个宏来包装java_test以运行testng,但是我在传递testng文件名时遇到了麻烦 到目前为止我有 加载(“@bazel_skylib/:lib.bzl”,“路径”) def java_testng(文件,deps=[],**kwargs): native.java_测试( name=path.split_扩展名(文件)[0], srcs=[file], 使用_testrunner=False, main_class='org.testng.testng', d

我试图在Bazel中创建一个宏来包装
java_test
以运行
testng
,但是我在传递testng文件名时遇到了麻烦

到目前为止我有

加载(“@bazel_skylib/:lib.bzl”,“路径”) def java_testng(文件,deps=[],**kwargs): native.java_测试( name=path.split_扩展名(文件)[0], srcs=[file], 使用_testrunner=False, main_class='org.testng.testng', deps=[ “//第三方:org\u testng\u testng” ]+副部长, args=[文件], **夸尔斯 ) 然而,args似乎是一个不存在的运行文件。 关于args的正确值的帮助

这是我想要的一个示例用法

java\u testng(
file=“SomeFakeTest.java”,
deps=[
“/:资源”,
“//第三方:com\u fasterxml\u jackson\u core\u jackson\u databind”,
“//第三方:org\u assertj\u assertj\u core”,
],
)

这是我想出的解决方案

加载(“@bazel_skylib/:lib.bzl”,“路径”) def java_testng(文件,deps=[],size=“small”**kwargs): native.java_库( name=path.split_扩展名(文件)[0]+“-lib”, deps=[ “//第三方:org\u testng\u testng” ]+副部长, srcs=[文件] ) native.java_测试( name=path.split_扩展名(文件)[0], 使用_testrunner=False, main_class='org.testng.testng', 运行时_deps=[ “//第三方:org\u testng\u testng”, paths.split_扩展名(文件)[0]+“-lib” ], 数据=[文件], 尺寸=尺寸, args=[“-testclass$(位置“+file+”)”], **夸尔斯 )
我不知道您为什么使用宏,我设法在没有宏的情况下调用testng。 请参见下面我的解决方案:

  • 我创建我的程序jar(使用一些注释处理器)
  • 我创建了我的测试jar(使用一些注释处理器)
  • 我通过java_test()调用testng
我唯一没有弄明白的事情是:如何不硬编码“libmy model test lib.jar”

java\u库(
name=“我的模特”,
srcs=glob([“src/main/java/***.java”]),
resources=glob([“src/main/resources/**]”),
deps=[
“@commons\u logging\u jar//jar”,
“:龙目岛”,
“:mysema_查询”,
...
], 
) 
爪哇大学图书馆(
name=“我的模型测试库”,
srcs=glob([“src/test/java/***.java”]),
deps=[
“@org\u hamcrest\u core\u jar//jar”,
“@commons\u logging\u jar//jar”,
“:龙目岛”,
“:mysema_查询”,
...
“@assertj_jar//jar”,
“@mockito_jar//jar”,
“@testng_jar//jar”,
], 
) 
java_测试(
name=“AllTests”,
size=“small”,
运行时_deps=[
“:我的模型测试库”,
“:我的模型”,
“@org\u jboss\u logging\u jar//jar”,
“@org\u objenesis\u jar//jar”,
“@com\u beust\u jcommander//jar”,
],
使用_testrunner=False,
main_class='org.testng.testng',
args=['-testjar'、'libmy-model-test-lib.jar'、'-verbose'、'2'],
)
java_插件(
name=“lombok_插件”,
processor_class=“lombok.launch.AnnotationProcessor隐藏$AnnotationProcessor”,
deps=[“@lombok_jar//jar”],
) 
爪哇大学图书馆(
name=“lombok”,
导出=[“@lombok_jar//jar”],
导出的插件=[“:lombok插件”],
) 
java_插件(
name=“mysema\u查询\u插件”,
processor_class=“com.mysema.query.apt.jpa.JPAAnnotationProcessor”,
deps=[
“@querydsl\u apt\u jar//jar”,
“@mysema\u codegen\u jar//jar”,
“@javax\u persistence\u jar//jar”,
“@querydsl\u codegen\u jar//jar”,
“@guava_jar//jar”,
“@querydsl\u core\u jar//jar”,
“@javax\u inject\u jar//jar”,
],
)
爪哇大学图书馆(
name=“mysema\u查询”,
exports=[“@querydsl\u apt\u jar//jar”],
导出的插件=[“:mysema\u查询插件”],
)
java_插件(
name=“mockito_插件”,
处理器_class=“”,
deps=[“@mockito_jar//jar”],
) 
爪哇大学图书馆(
name=“mockito”,
exports=[“@mockito_jar//jar”],
导出的_插件=[“:mockito_插件”],
) 

我以前也尝试过创建java_库