构建步骤“执行 Windows 批处理命令”将构建标记为失败已完成:失败

Posted

技术标签:

【中文标题】构建步骤“执行 Windows 批处理命令”将构建标记为失败已完成:失败【英文标题】:Build step 'Execute Windows batch command' marked build as failure Finished: FAILURE 【发布时间】:2015-12-27 00:28:56 【问题描述】:

如果我自己执行 testng.xml,我已将我的项目配置为使用 Jenkins 运行 Build,它会成功执行我的测试用例,但如果我通过 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 - Selenium\SeleniumWorkspace\iParkit_copy
[iParkit_copy] $ cmd /c call C:\Windows\TEMP\hudson4187523140058494240.bat

D:\K - Selenium\SeleniumWorkspace\iParkit_copy>run.bat

D:\K - Selenium\SeleniumWorkspace\iParkit_copy>java -cp bin;lib/* org.testng.TestNG testng.xml 
[TestNG] Running:
  D:\K - Selenium\SeleniumWorkspace\iParkit_copy\testng.xml


===============================================
Suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================

Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

【问题讨论】:

谁能解决我的这个问题???? 请正确设置路径,然后才能正常工作 Open CMD set classpath=C:\Users\Learn-automation\bin;C:\Users\Learn-automation\libs*;然后运行下面的命令,如果它从 cmd 运行正常,那么它将运行 java -cp bin;libs/* org.testng.TestNG testng.xml 好吧,我可以通过命令提示符运行测试套件,但是使用 Jenkins 失败让我再告诉你一件事,关于我的项目 1 的层次结构:D:\K - Selenium\SeleniumWorkspace\ iParkit_copy\bin\automationframework bin 之后有一个包文件夹,如果在设置类路径或任何其他成功运行它所需的插件时包含它,我们可以有一段时间的屏幕共享会话,以便您可以自己查看问题,我是通过电子邮件向您发送我的 Skype。谢谢 当涉及到(sendKeys)涉及使用 Jenkins 构建失败的步骤时,我观察到要添加的另一件事,请建议 这也是你的问题,是一样的。 [***.com/questions/34536895/… 但您在此处提供详细的错误日志。使用此代码: public WebDriver driver = null;你可以试试这个,但不确定这是否能解决你的问题。 【参考方案1】:

在批处理脚本末尾使用exit /b 0 应该可以解决问题。

【讨论】:

这个答案很好,但如果您还可以解释命令的含义,它会更有帮助。【参考方案2】:

批处理命令将检查最后一个命令的“错误级别”(返回代码)。 除零以外的任何值都将导致失败。 您没有提供太多详细信息,但您的浏览器似乎返回了非零错误级别。

您可以在浏览器之后运行一个虚拟命令来确定错误级别。或者修复导致非零错误级别的任何原因(推荐解决方案)

设置错误级别的常用虚拟命令示例是“ver > nul”

【讨论】:

你找到解决办法了吗? 答案应该更详细一些。虚拟命令是什么意思?怎么做?任何可能导致非零错误级别的示例。 "ver > nul" 是一个流行的虚拟命令。 “错误级别”返回代码完全是特定于应用程序的,因此不可能给出任何可能导致非零错误级别的一般示例。您必须检查相关应用程序的文档。

以上是关于构建步骤“执行 Windows 批处理命令”将构建标记为失败已完成:失败的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins 中的自动部署构建失败

jenkins 构建触发器 以及参数的传递

如何在 Jenkins“执行 Windows 批处理命令”中组合两个或多个命令

Jenkins创建新任务

jenkins根据SVN增量更新

Jenkins构建项目