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