我从5天开始一直在玩詹金斯,但我有一个问题。我有一个使用JUnit进行单元测试的Java代码,我正在使用Gradle Build来构建代码。我故意试图通过三次测试中的测试失败并且gradle构建报告失败!这是预料之中的。然而,我将代码推送到github SampleTestProject,并在一分钟后(如配置)在Jenkins上触发了构建。然而jenkins标志着构建成功,即使在本地机器上构建时测试失败了!
我要发布的守则非常糟糕,但是可以亲身体验詹金斯
主要班级
package com.bitwise.test;
/**
* Created by AniruddhaS on 2/11/2016.
*/
public class Hello {
public String sayHello() {
return "Hello";
}
public int addArgs(int i, int i1) {
return (i+i1);
}
public String sayBye() {
return "Bye";
}
public int mulArgs(int i, int i1) {
return (i*i1);
}
}
测试类
package com.bitwise.test;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.experimental.theories.suppliers.TestedOn;
/**
* Created by AniruddhaS on 2/11/2016.
*/
public class HelloTest {
@Test
public void itShouldReturnHelloOnCallingHelloMethod(){
//given
Hello vector=new Hello();
//when
Assert.assertSame("Hello",vector.sayHello());
//then
}
@Test
public void itShouldReturnAValueAfterAdditionOfTheArgumentValues(){
//given
Hello adder=new Hello();
//when
Assert.assertEquals(3,adder.addArgs(2,1));
//then
}
@Test
public void itShouldPrintByeWhenRelevantFunctionIsCalled(){
//given
Hello bye=new Hello();
//when
Assert.assertSame("Bye",bye.sayBye());
//then
}
@Test
public void itShouldMultiply(){
//given
Hello bye=new Hello();
//when
Assert.assertEquals(6,bye.mulArgs(5,3));/*here mulArgs emits 15 but
test fails since expected value is 6*/
//then
}
}
的build.gradle
group 'hello'
version '1.0'
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
mavenCentral()
}
task test1<<
{
println("hello, test running")
}
test{
testLogging{
events 'started','passed'
events 'started','failed'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
}
答案 0 :(得分:3)
好吧,我无法理解您的代码,但您可以在jenkins中添加可能影响作业状态的构建后操作。
例如:Text finder plugin: 在您指定的日志文件中搜索关键字,并使用该关键字降级&#34;成功&#34;建立失败。
Log Parser Plugin:显示错误和警告摘要
答案 1 :(得分:2)
你是如何运行Gradle脚本的?
无论您是使用“执行shell”步骤执行./gradlew test
之类的操作,还是使用Gradle plugin执行test
任务,Jenkins 都将如果Gradle脚本失败,则将构建标记为失败,例如由于测试断言失败。
但是你想要的是将Jenkins构建标记为不稳定而不是失败。
为此,您需要更新Gradle脚本,以便在test
的{{1}}块中将测试失败视为致命错误:
build.gradle
然后你可以在Jenkins中运行你的Gradle脚本并让它analyse JUnit结果,这会将构建状态设置为成功或不稳定,具体取决于关于测试是否通过。
Gradle test {
ignoreFailures = true
}
插件将测试结果以JUnit XML格式写入java
(在您的示例中)。
要分析结果,请转到作业配置中的“构建后操作”,然后添加“发布JUnit测试结果报告”,并在“测试报告XML”字段中输入build/test-results/TEST-HelloTest.xml
。