在我的自定义NetBeans项目中,我可以使用project.xml文件中的操作和build.xml中的Ant目标的组合在NetBeans UI中运行单个JUnit测试。在将我的测试移植到TestNG时,我也希望能够使用NetBeans用户界面运行单个TestNG测试。不幸的是,事实证明这比预期的要困难。这是我的蚂蚁目标:
<target name="testng-single" depends="compile-test" description="Run individual testng test" >
<testng failureproperty="test.failed" haltonfailure="yes" outputDir="src/testng/test-output" workingDir="." >
<classpath refid="classpath.test" />
<classpath refid="classpath.groovy" />
<classpath location="${build}"/>
<classpath location="src/testng"/>
<classfileset dir="src/testng" includesfile="${test.class}" />
</testng>
<fail message="Tests failed!" if="test.failed"/>
</target>
这是我的行动:
<action name="test.single">
<script>build.xml</script>
<target>testng-single</target>
<context>
<property>test.class</property>
<folder>src/testng</folder>
<pattern>.java$</pattern>
<format>java-name</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
我可以右键单击测试文件并选择测试文件,但当它运行时,它找不到类。我看到了以下错误:
Includesfile D:javamarketftharnesscom.javamarket.testng.donothing.DoNothingTest not found.
Fthaness是我项目的顶级目录,src/testng是它下面的目录,其中包含testng测试。我尝试过各种各样的改变,但都没有成功。有人能帮忙吗?
如果这能帮助任何想要解决相同问题的人:我按如下方式解决了这个问题。这不太好,但似乎有效。
从本质上讲,我使用TestNG的能力将测试定义作为XML文件使用。我沿着以下路线创建了一个蚂蚁目标:
<target name="testng-single" depends="compile-test" description="Run individual testng test" >
<copy file="${tst.dir}/TestSingle.xml" overwrite="true" tofile="${tst.dir}/TempTestSingle.xml" >
<filterset>
<filter token="CLASS" value="${test.class}"/>
</filterset>
</copy>
<testng failureproperty="test.failed" haltonfailure="yes" outputDir="src/testng/test-output" suitename="TestNG Suite" testname="TestNG Name" workingDir="." >
<classpath refid="classpath.test" />
<classpath refid="classpath.groovy" />
<classpath location="${build}"/>
<classpath location="src/testng"/>
<xmlfileset dir="${tst.dir}" includes="TempTestSingle.xml" />
</testng>
<fail message="Tests failed!" if="test.failed"/>
</target>
将以下内容添加到project.xml文件中:
<action name="test.single">
<script>build.xml</script>
<target>testng-single</target>
<context>
<property>test.class</property>
<folder>src/testng</folder>
<pattern>.java$</pattern>
<format>java-name</format>
<arity>
<one-file-only/>
</arity>
</context>
</action>
并添加了一个TestSingle.xml文件,如下所示:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Single Method Suite">
<test name="Single Method Test">
<classes>
<class name="@CLASS@">
<methods>
<include name=".*" />
</methods>
</class>
</classes>
</test>
</suite>
有了这些更改,我现在可以右键单击我的一个TestNGjava类并运行它
希望这能帮助到别人!Martin