如何从命令行从 Netbeans 创建的 ant 项目运行单个 junit 测试?

dav*_*les 3 java ant junit netbeans

如果您不介意有额外的抵押品来记住/设置CLASSPATH如何从命令行运行 JUnit 测试用例,则此答案有效。但是,如果项目是由 Netbeans 创建的,则类路径已经在您的项目中,并且该项目“知道”如何运行单个单元测试和单个单元测试方法。

$ ant -p
. . .
 test-single             Run single unit test.
 test-single-method      Run single unit test.
. . .
Run Code Online (Sandbox Code Playgroud)

但是,如果您尝试构建这些目标,您将看到此错误消息(以及其他错误消息),而没有关于如何设置相关属性的指导:

BUILD FAILED
/home/me/myproject/nbproject/build-impl.xml:1300: Must select some files in the IDE or set javac.includes
Run Code Online (Sandbox Code Playgroud)

属性设置不正确,ant 只会告诉您构建成功,但不会编译或运行您的测试。这比它应该的更难。

那么,我们如何设置这些目标所需的属性呢?

dav*_*les 5

通过一些实验,我发现了这些东西。

要构建test-single目标:

javac.includes和都设置test.includes为相关 junit 测试的 .java 源文件的路径。该路径必须相对于项目的test文件夹。例子:

$ ant test-single -Djavac.includes=my/company/MyTest.java -Dtest.includes=my/company/MyTest.java
Run Code Online (Sandbox Code Playgroud)

要构建test-single-method目标:

此外,设置test.class为您的测试类的完全限定名称并设置test.method为测试方法的名称。例子:

$ ant test-single-method -Djavac.includes=my/company/MyTest.java -Dtest.includes=my/company/MyTest.java -Dtest.class=my.company.MyTest -Dtest.method=testSomething
Run Code Online (Sandbox Code Playgroud)

是的,参数是高度重复的,需要编写脚本。我封装test-single了一个只需要 .java 源路径的脚本。

我想包装test-single-method一个脚本,该脚本接受 .java 源文件和方法的路径,但我还没有学会如何执行字符串魔术。