在更新为Junit 5时,请保持build.xml的语法兼容性



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,如上所述。

我希望它能帮助您,再见。

最新更新