检测jenkins上的测试失败

时间:2016-02-12 07:01:16

标签: git jenkins gradle junit tdd


我从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'
}


请建议如何解决上述问题!
在此先感谢:)

2 个答案:

答案 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