Java 詹金斯的工作失败了
我有一个.Jar文件,它在运行时将数据加载到数据库中。我已计划通过Jenkins运行此作业。当我在Jenkins中执行作业时,它成功地运行了.JAR。但是,请说明作业中是否存在空指针异常,并且作业未成功完成。即便如此,詹金斯说,这项工作已经“通过”。如果在作业执行过程中出现问题,如何使作业失败?上次我遇到这个问题时,我决定采取不同的策略,并将程序调用更改为junit测试。詹金斯当时很高兴Java 詹金斯的工作失败了,java,jenkins,Java,Jenkins,我有一个.Jar文件,它在运行时将数据加载到数据库中。我已计划通过Jenkins运行此作业。当我在Jenkins中执行作业时,它成功地运行了.JAR。但是,请说明作业中是否存在空指针异常,并且作业未成功完成。即便如此,詹金斯说,这项工作已经“通过”。如果在作业执行过程中出现问题,如何使作业失败?上次我遇到这个问题时,我决定采取不同的策略,并将程序调用更改为junit测试。詹金斯当时很高兴 Steps I took: 1. create an empty (maven) project 2. ad
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上次遇到这个问题时,我决定采取不同的策略,将程序调用更改为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的解决方案很好。如果你不想在Jenkins中编写JUnit测试并支持它,你可以做他前面提到的事情:捕捉空指针异常(实际上,只是在你的应用程序中有一个顶级捕捉),然后调用API以退出并返回代码:
try {
myCode.call();
catch (Exception e) {
System.out.println("An exception was caught at the top level:" + e);
System.exit(-1);
}
@科里的解决方案很好。如果你不想在Jenkins中编写JUnit测试并支持它,你可以做他前面提到的事情:捕捉空指针异常(实际上,只是在你的应用程序中有一个顶级捕捉),然后调用API以退出并返回代码:
try {
myCode.call();
catch (Exception e) {
System.out.println("An exception was caught at the top level:" + e);
System.exit(-1);
}
如果退出代码不是零,Jenkins jobs将失败
System.exit(1);
如果退出代码不是零,Jenkins jobs将失败
System.exit(1);
应该工作(或者更准确地说是失败:-)如何“运行”jar文件?它是一个可执行的jar。所以我在jenkins的“配置作业”部分做了java-jarwriter.jar,jar调用System.exit了吗?不,没有。。我怎么做@bevynq你怎么“运行”jar文件?它是一个可执行的jar。所以我在jenkins的“配置作业”部分做了java-jarwriter.jar,jar调用System.exit了吗?不,没有。。在我的案例中,@BevynQIn我是如何做到的?我可以访问源代码,这样我就可以调用该方法并观察返回。如果你真的想破解,我想你可以打开jar,试着从清单文件中找到要调用的内容。抱歉,这没有多大帮助:(我编写了代码并创建了JAR。因此我可以访问所有内容..那么这里到底需要做什么呢?谢谢为您添加一些示例代码。更改了测试()的内容)方法,您应该很乐意在我的情况下,我可以访问源代码,因此我可以调用该方法并观察返回结果。如果您真的想进行黑客攻击,我想您可以打开jar并尝试从清单文件中查找要调用的内容。抱歉,这没有多大帮助:(我编写了代码并创建了JAR。因此我可以访问所有内容。那么这里到底需要做什么呢?感谢为您添加一些示例代码。更改了test()方法的内容,您应该可以开始了