我已经将我的项目配置为使用Jenkins运行Build,如果我自己执行testng.xml,它会成功执行我的测试用例,但如果我通过Jenkins执行,我会收到以下错误消息
生成步骤"执行Windows批处理命令"将生成标记为失败完成:故障
但是,如果测试用例输出仅使用`(system.out.println();),它将成功执行构建
如果测试用例与打开浏览器有关,则通过Jenkins 失败
这是我的测试班
public WebDriver driver;
public String baseUrl = "http://iparkit.com/";
@BeforeMethod
public void initializeWebDriver() {
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get(baseUrl);
driver.manage().window().maximize();
}
//Close Browser after each test case execution
@AfterMethod
public void closeBrowser()
{
driver.close();
}
@Test(enabled=true) //TC2-01 - OK
public void iparkit_valid_email_password() throws InterruptedException
{
driver.findElement(By.xpath(".//*[@id='mast']/nav/ul/li[4]/a")).click();
driver.findElement(By.xpath(".//*[@id='email']")).sendKeys("imanltd+1@hotmail.com");
driver.findElement(By.xpath(".//*[@id='password']")).sendKeys("*******");
driver.findElement(By.xpath(".//*[@id='top']/div/main/form/main/fieldset[3]/button")).click();
String Expectedlnktext = driver.findElement(By.linkText("Sign Out")).getText();
String Actuallnktext = "Sign Out";
Assert.assertEquals(Actuallnktext,Expectedlnktext);
}
}
这是我的testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
<test name="Test">
<classes>
<class name="automationframework.Iparkittesting"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
这是最后一个控制台输出
Started by user anonymous
Building in workspace D:K - SeleniumSeleniumWorkspaceiParkit_copy
[iParkit_copy] $ cmd /c call C:WindowsTEMPhudson4187523140058494240.bat
D:K - SeleniumSeleniumWorkspaceiParkit_copy>run.bat
D:K - SeleniumSeleniumWorkspaceiParkit_copy>java -cp bin;lib/* org.testng.TestNG testng.xml
[TestNG] Running:
D:K - SeleniumSeleniumWorkspaceiParkit_copytestng.xml
===============================================
Suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
在批处理脚本结束时使用exit /b 0
就可以了。
批处理命令将检查最后一个命令的"错误级别"(返回代码)。任何不为零的东西都会导致失败。你没有给出太多细节,但你的浏览器似乎返回了一个非零错误级别。
您可以在浏览器之后运行一个伪命令来判断错误级别。或者修复导致非零错误级别的任何原因(推荐解决方案)
设置错误级别的常用伪命令示例为"ver>nul"