我尝试在 TestNG 中执行测试用例。我创建了一个 TestNG.xml 文件。我想通过 Jenkins 运行它,所以我为此创建了一个批处理文件。当我从 Jenkins 运行 testNG.bat 时。它显示构建状态为“成功”,但没有执行任何测试用例。相同的 testng.xml 在 eclipse 中运行时工作正常。
以下是TestNG.xml--
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Test">
<classes>
<class name="pkg1.Class1"/>
<class name="pkg1.Class3"/>
<class name="pkg2.Class4"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
下面是Testng.bat---
cd C:\Users\Vinay\workspace_n\$$POM
set ProjectPath=C:\Users\Vinay\workspace_n\$$POM
echo %ProjectPath%
set classpath=%ProjectPath%\bin;%ProjectPath%\lib\*
echo %classpath%
java org.testng.TestNG %ProjectPath%\testng.xml
pause
以下是在jenkins上运行构建后的结果
10:30:18 Started by user anonymous
10:30:18 Building in workspace C:\Users\Vinay\workspace_n\$POM
10:30:18 [$POM] $ cmd /c call C:\Windows\TEMP\hudson7515512989309656489.bat
10:30:18
10:30:18 C:\Users\Vinay\workspace_n\$POM>cd C:\Users\Vinay\workspace_n\$$POM
10:30:18
10:30:18 C:\Users\Vinay\workspace_n\$$POM>set ProjectPath=C:\Users\Vinay\workspace_n\$$POM
10:30:18
10:30:18 C:\Users\Vinay\workspace_n\$$POM>echo C:\Users\Vinay\workspace_n\$$POM
10:30:18 C:\Users\Vinay\workspace_n\$$POM
10:30:18
10:30:18 C:\Users\Vinay\workspace_n\$$POM>set classpath=C:\Users\Vinay\workspace_n\$$POM\bin;C:\Users\Vinay\workspace_n\$$POM\lib\*
10:30:18
10:30:18 C:\Users\Vinay\workspace_n\$$POM>echo C:\Users\Vinay\workspace_n\$$POM\bin;C:\Users\Vinay\workspace_n\$$POM\lib\*
10:30:18 C:\Users\Vinay\workspace_n\$$POM\bin;C:\Users\Vinay\workspace_n\$$POM\lib\*
10:30:18
10:30:18 C:\Users\Vinay\workspace_n\$$POM>java org.testng.TestNG C:\Users\Vinay\workspace_n\$$POM\testng.xml
10:30:19 [TestNG] Running:
10:30:19 C:\Users\Vinay\workspace_n\$$POM\testng.xml
10:30:19
10:30:19
10:30:19 ===============================================
10:30:19 Suite
10:30:19 Total tests run: 0, Failures: 0, Skips: 0
10:30:19 ===============================================
10:30:19
10:30:19
10:30:19 C:\Users\Vinay\workspace_n\$$POM>pause
10:30:19 Press any key to continue . . .
10:30:19
10:30:19 C:\Users\Vinay\workspace_n\$$POM>exit 0
10:30:20 Finished: SUCCESS
将批处理文件更新为以下内容。
cd C:\Users\Vinay\workspace_n\$$POM
set ProjectPath=C:\Users\Vinay\workspace_n\$$POM
echo %ProjectPath%
set classpath=%ProjectPath%\bin;%ProjectPath%\lib\*
echo %classpath%
java org.testng.TestNG -log 10 %ProjectPath%\testng.xml
pause
我得到以下结果。
09:55:05 C:\Users\Vinay\workspace_n\$$POM>java org.testng.TestNG -log 10 C:\Users\Vinay\workspace_n\$$POM\testng.xml
09:55:05 [TestRunner] Running the tests in 'Test' with parallel mode:false
09:55:05 [RunInfo] Adding method selector: org.testng.internal.XmlMethodSelector@490d6c15 priority: 10
09:55:05 [TestNGClassFinder] SKIPPING CLASS class pkg1.Class3 no TestNG annotations found
09:55:05 [TestNGClassFinder] SKIPPING CLASS class pkg2.Class4 no TestNG annotations found
09:55:05 [TestNGClassFinder] SKIPPING CLASS class pkg1.Class1 no TestNG annotations found
09:55:05 [TestNG] Running:
09:55:05 C:\Users\Vinay\workspace_n\$$POM\testng.xml
09:55:05
09:55:05 [SuiteRunner] Created 1 TestRunners
09:55:05 [TestRunner] Running test Test on 0 classes, included groups:[] excluded groups:[]
09:55:05 [TestNG] RUNNING: Suite: "Test" containing "0" Tests (config: C:\Users\Vinay\workspace_n\$$POM\testng.xml)
09:55:05 ===== Invoked methods
09:55:05 =====
09:55:05 Creating C:\Users\Vinay\workspace_n\$$POM\test-output\Suite\Test.html
09:55:05 Creating C:\Users\Vinay\workspace_n\$$POM\test-output\Suite\Test.xml
09:55:05
09:55:05 ===============================================
09:55:05 Test
09:55:05 Tests run: 0, Failures: 0, Skips: 0
09:55:05 ===============================================
09:55:05
以下是其中一个类。
package pkg1;
import org.testng.annotations.Test;
public class Class1 {
@Test(priority=1)
void pkg111() {
System.out.println("pkg1 class1 p1");
}
@Test(priority=4)
void pkg121() {
System.out.println("pkg1 class1 p4");
}
@Test(priority=3)
void pkg131() {
System.out.println("pkg1 class1 p3");
}
}
最佳答案
按照@juherr提供的步骤,我已将 TestNG 版本从 6.8 更新到 6.11。现在我可以通过 jenkins 执行测试用例。
关于java - 即使构建成功后,通过 jenkins 执行批处理文件时也不会执行测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43817018/