首页 > 解决方案 > 如何正确运行 gradle 测试任务?

问题描述

当我从 Intellij Idea 运行 gradle 测试时,我尝试使用 gradle 构建我的项目,一切都很好 - 所有测试都通过了,但是当我使用命令从命令行执行相同的操作时,gradle test一些单元测试失败了。那是我的build.gradle文件:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

bootJar {
    baseName = 'myProjectName'
}

repositories {
    mavenCentral()
    maven {
        url "my_repo_url"
    }
    maven {
        url "my_repo_url"
        credentials {
            username = System.getenv("MVN_USER")
            password = System.getenv("MVN_PASS")
        }
    }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {

    compile ('org.apache.poi:poi-ooxml:4.0.1')
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'

    compile ('org.springframework.boot:spring-boot-starter:2.0.5.RELEASE') {
        exclude module : 'spring-boot-starter-logging'
    }

    compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '4.0.1'

    testCompile('org.springframework.boot:spring-boot-starter-test:2.0.1.RELEASE')
    testCompile('com.jayway.jsonpath:json-path')
    testCompile group: 'commons-io', name: 'commons-io', version: '2.6'
    testCompile group: 'pl.pragmatists', name: 'JUnitParams', version: '1.1.1'

    compile group: 'joda-time', name: 'joda-time', version: '2.9.4'

}

还有我的junit测试类:

public class MyTest {

    @Test
    public void testSimpleIfParsing() throws IOException {
        String complicatedStructure = "testString";
        IfTemplateElement MyClass = new MyClass(
                complicatedStructure // This variable NOT null, but I have NullPointerException
        );
        Object response = MyClass.evaluate();
        Assert.assertNotNull( response );
    }
}

MyClass构造函数:

public class MyClass {
public MyClass( String s ) {

        s = s.substring( 0, 5 );    // there I have NullPointerException.

    }
}

例外:

com.mypackage.MyTest > testSimpleIfParsing FAILED
    java.lang.NullPointerException at MyTest.java:28

但是如果在MyClass构造函数中,我插入System.out.println(s)在两种情况下都通过的所有测试(来自 CLI 和 Intellij Idea)。

谁能帮我怎么回事?我哪里错了?

标签: gradleintellij-idea

解决方案


听起来很奇怪。

我建议您尝试使用 intelij 调试 UT,然后尝试使用 gradle。

如何更改 inteliJ 中的单元测试运行器?

转到设置 -> 构建、执行、部署 > 构建工具 > Gradle > Runner

在此处输入图像描述


推荐阅读