i维护一个较大的组织用于其蚂蚁配置文件的库。我正在尝试从Junit 4后端更新到Junit 5后端,最终用户的中断最小。
我遇到的主要问题是输出格式化。我们有一个接受 <element name="test-formatter"/>
的macrodef
<runmultipletest foo=...>
<test-formatter>
<formatter type="plain" usefile="false" />
<formatter type="xml" usefile="true" />
</test-formatter>
<runmultipletest-fileset>
<fileset refid="${junit.integration.fileset}"/>
</runmultipletest-fileset>
</runmultipletest>
在宏观上,这被送入
<batchtest todir="@{test.todir}" skipNonTests="@{skipNonTests}">
<test-formatter/>
<runmultipletest-fileset/>
</batchtest>
现在,我正在升级到Junit5。是否可以不用与现有格式最终用户用于转换
的后退兼容性。<formatter type="plain" usefile="false" />
<formatter type="xml" usefile="true" />
进入
<listener type="legacy-plain" sendSysOut="true" sendSysErr="true"/>
<listener type="legacy-xml" sendSysErr="true" sendSysOut="true" outputDir="@{test.todir}"/>
从我的macrodef内部?我可以找出XSLT将XML转换为我想要的东西,但我不太了解蚂蚁,以至于可以知道是否可以将传递的元素转换为元素,然后让junitlauncher
使用它。
好吧,我尚不清楚如何从JUnit 4
转到JUnit 5
,无论如何您都可以将参数传递给macrodef
以更改test-formatter
的内容,如以下内容:
<macrodef name="test-formatter">
<attribute name="version" />
<sequential>
<if>
<equals arg1="@{version}" arg2="5" />
<then>
<listener type="legacy-plain" sendSysOut="true" sendSysErr="true"/>
<listener type="legacy-xml" sendSysErr="true" sendSysOut="true" outputDir="@{test.todir}"/>
</then>
<else>
<formatter type="plain" usefile="false" />
<formatter type="xml" usefile="true" />
</else>
</if>
</sequential>
</macrodef>
因此,当您执行测试时,您可以选择哪种测试范围使用:
<batchtest todir="@{test.todir}" skipNonTests="@{skipNonTests}">
<test-formatter />
<runmultipletest-fileset />
</batchtest>
而不是:
<batchtest todir="@{test.todir}" skipNonTests="@{skipNonTests}">
<test-formatter version="5" />
<runmultipletest-fileset />
</batchtest>
如果我是对的,并且您已经有一个包含JUnit
版本的属性,则可以将其作为参数传递给test-formatter
,如上所述。
我希望它能帮助您,再见。