0

実行時にデータベースにデータをロードするだけの.Jarファイルがあります。Jenkins経由でこのジョブを実行するようにスケジュールしました。Jenkinsでジョブを実行すると、.JARが正常に実行されます。ただし、ジョブにnullポインター例外があり、それが正常に完了しなかった場合を言います。それでも、ジェンキンスは仕事が「合格」したと言います。ジョブの実行中に問題が発生した場合、どうすればジョブを失敗できますか?

4

3 に答える 3

2

@Coreyのソリューションは優れています。また、JUnitテストを作成してJenkinsでサポートしたくない場合は、彼が以前にほのめかしたことを実行できます。nullポインター例外をキャッチし(実際には、アプリでトップレベルのキャッチを実行します)。 APIを呼び出して、リターンコードで終了します。

try {
    myCode.call();
catch (Exception e) {
    System.out.println("An exception was caught at the top level:" + e);
    System.exit(-1);
}
于 2013-03-27T01:51:05.867 に答える
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によるピックアップです。

于 2013-03-27T01:29:59.477 に答える
1

終了コードがゼロ以外の場合、Jenkinsジョブは失敗します。

System.exit(1);

動作するはずです(または失敗します、より正確には:-)

于 2013-03-27T01:51:26.990 に答える