📅  最后修改于: 2023-12-03 15:37:44.274000             🧑  作者: Mango
TestNG是一个流行的Java测试框架,是JUnit的替代品。 TestNG提供了许多强大的功能,例如并行测试,测试套件,数据驱动测试等等。 然而,在某些情况下,您可能没有Java编译器可用,并且想要在没有编译的情况下运行TestNG测试用例。在这种情况下,您可以使用以下方法在没有Java编译器的情况下在TestNG中运行测试用例。
TestNG提供了一种后期绑定机制,该机制使您可以使用Java反射来运行TestNG测试用例,而无需提前编译。您可以将测试用例类的完整类名传递给TestNG,并且TestNG将使用Java反射在运行时加载类并运行测试。
例如,假设您有一个名为MyTest的测试用例类,并且该类位于包com.example中。在没有Java编译器的情况下,您可以使用以下命令运行该测试用例:
java -cp "testng.jar:build/classes/main" org.testng.TestNG -testclass com.example.MyTest
在这个命令中,“testng.jar”是TestNG库的路径,“build / classes / main”是您的测试用例类的路径,而“org.testng.TestNG”是TestNG的主类名。
JShell是JDK 9中引入的交互式Java Shell,可以将其用作临时Java环境,从而允许您在不进行编译的情况下运行Java代码片段。您可以使用JShell运行测试用例类,并将其包装在TestNG测试套件中。以下是一个示例:
首先,打开JShell并导入TestNG:
> jshell
| Welcome to JShell -- Version 9.0.1
| For an introduction type: /help intro
jshell> import org.testng.TestNG;
然后,创建一个TestNG测试套件,该套件包含您要运行的测试用例类:
jshell> String[] testClasses = new String[]{"com.example.MyTest"};
jshell> TestNG testng = new TestNG();
jshell> testng.setTestClasses(testClasses);
最后,运行测试套件:
jshell> testng.run();
这将使用JShell运行您的测试用例,并将其封装在TestNG测试套件中。
在没有Java编译器的情况下运行TestNG测试用例是可能的。您可以使用TestNG自带的后期绑定机制或JShell来实现这一点。但是,请注意,这些方法可能不如编译测试用例那么高效,并且如果您的测试用例依赖于大量的外部库,则可能无法正常工作。因此,最好在可能的情况下使用Java编译器进行编译。