没有詹金斯的工作

时间:2013-03-27 01:06:24

标签: java jenkins

我有一个.Jar文件,它只会在数据运行时将数据加载到数据库中。我计划通过詹金斯来完成这项工作。当我在Jenkins中执行作业时,它成功运行.JAR。但是,如果作业中存在空指针异常并且未成功完成。即便如此,詹金斯说这份工作已经“通过”。如果在执行作业期间出现问题,如何使作业失败?

3 个答案:

答案 0 :(得分:2)

@Corey的解决方案很好。如果您不想编写JUnit测试并在Jenkins中支持它,您可以执行前面提到的操作:捕获空指针异常(实际上,只是在您的应用程序中有一个顶级捕获),以及调用API退出并返回代码:

try {
    myCode.call();
catch (Exception e) {
    System.out.println("An exception was caught at the top level:" + e);
    System.exit(-1);
}

答案 1 :(得分:1)

上次我遇到这个问题时,我决定采用不同的方法,将程序调用更改为junit测试。詹金斯当时很高兴。

Steps I took:
1. create an empty (maven) project
2. added a single java class SmokeTest.java
3. Added test that called the method I was testing via a script
4. Create a (maven) Jenkins job to run the project

我测试的内容:

public class SmokeTest
{
    private static final String OK = "OK"; //$NON-NLS-1$

    @Test
    public void test()
    {
        // Create a new instance of the Firefox driver
        final WebDriver driver = new HtmlUnitDriver();

        final String url = PropertyManager.getInstance().getString(PropertyManager.SMOKE_TEST_URL_BASE) + "smoke/smoketest"; //$NON-NLS-1$
        AuditLog.registerEvent("Smoke test url is: " + url, this.getClass(), AuditLog.INFO); //$NON-NLS-1$
        driver.get(url);

        // Find the text element by its id
        final WebElement databaseElement = driver.findElement(By.id("database")); //$NON-NLS-1$

        final String databaseResult = databaseElement.getText();
        Assert.assertEquals(SmokeTest.OK, databaseResult);

        //Close the browser
        driver.quit();
    }
}

这里最重要的部分是“Assert.assertEquals”行。结果是由jUnit和jenkins提取

答案 2 :(得分:1)

如果退出代码为零,则Jenkins作业失败。

System.exit(1);

应该工作(或者失败,更确切地说: - )