pitest 无法定位 junit 测试
pitest not able to locate junit test
我的 gradle 最糟糕的是无法给我正确的结果。它似乎无法找到我的测试文件。
我有以下 build.gradle 文件:
apply plugin: "java" apply plugin: "maven" apply plugin: "info.solidsoft.pitest"
group = "myorg" version = 1.0
repositories {
mavenCentral() }
sourceSets.all { set ->
def jarTask = task("${set.name}Jar", type: Jar) {
baseName = baseName + "-$set.name"
from set.output
}
artifacts {
archives jarTask
} }
sourceSets {
api
impl main{ java { srcDir 'src/api/java' srcDir 'src/impl/java' } } test { java { srcDir 'src/test/java' } } }
buildscript {
repositories {
mavenCentral()
//Needed only for SNAPSHOT versions
//maven { url "http://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
classpath 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.1.6'
} }
dependencies {
apiCompile 'commons-codec:commons-codec:1.5'
implCompile sourceSets.api.output
implCompile 'commons-lang:commons-lang:2.6'
testCompile 'junit:junit:4.9'
testCompile sourceSets.api.output
testCompile sourceSets.impl.output
runtime configurations.apiRuntime
runtime configurations.implRuntime }
jar {
from sourceSets.api.output
from sourceSets.impl.output }
pitest { println sourceSets.main
targetClasses = ['doubler.*'] targetTests = ['doubler.*'] verbose="on" }
输出存储在正确的文件夹中。当我 运行 gradle 测试时,它也 运行 没问题。
pitest 用户组中提供了有关此问题的一些附加信息。
https://groups.google.com/forum/#!topic/pitusers/8C7BHh-Vb6Y
测试 运行 看起来像这样。
@Test
public void testIt2() {
assert new DoublerImpl().testIt(1) == 2;
}
Pitest 正确报告这些测试提供了 0% 的 class 覆盖率。没有覆盖,因为使用了 assert
关键字。
除非在 JVM 运行 中设置了 -ea
标志,否则测试断言将被禁用。编译器生成的这段代码周围基本上隐藏了 if 块
@Test
public void testIt2() {
if (assertionsEnabled) {
assert new DoublerImpl().testIt(1) == 2;
}
}
由于未启用断言,因此未执行任何代码。
要解决此问题,请改用内置的 JUnit 断言。
我的 gradle 最糟糕的是无法给我正确的结果。它似乎无法找到我的测试文件。
我有以下 build.gradle 文件:
apply plugin: "java" apply plugin: "maven" apply plugin: "info.solidsoft.pitest"
group = "myorg" version = 1.0
repositories {
mavenCentral() }
sourceSets.all { set ->
def jarTask = task("${set.name}Jar", type: Jar) {
baseName = baseName + "-$set.name"
from set.output
}
artifacts {
archives jarTask
} }
sourceSets {
api
impl main{ java { srcDir 'src/api/java' srcDir 'src/impl/java' } } test { java { srcDir 'src/test/java' } } }
buildscript {
repositories {
mavenCentral()
//Needed only for SNAPSHOT versions
//maven { url "http://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
classpath 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.1.6'
} }
dependencies {
apiCompile 'commons-codec:commons-codec:1.5'
implCompile sourceSets.api.output
implCompile 'commons-lang:commons-lang:2.6'
testCompile 'junit:junit:4.9'
testCompile sourceSets.api.output
testCompile sourceSets.impl.output
runtime configurations.apiRuntime
runtime configurations.implRuntime }
jar {
from sourceSets.api.output
from sourceSets.impl.output }
pitest { println sourceSets.main
targetClasses = ['doubler.*'] targetTests = ['doubler.*'] verbose="on" }
输出存储在正确的文件夹中。当我 运行 gradle 测试时,它也 运行 没问题。
pitest 用户组中提供了有关此问题的一些附加信息。
https://groups.google.com/forum/#!topic/pitusers/8C7BHh-Vb6Y
测试 运行 看起来像这样。
@Test
public void testIt2() {
assert new DoublerImpl().testIt(1) == 2;
}
Pitest 正确报告这些测试提供了 0% 的 class 覆盖率。没有覆盖,因为使用了 assert
关键字。
除非在 JVM 运行 中设置了 -ea
标志,否则测试断言将被禁用。编译器生成的这段代码周围基本上隐藏了 if 块
@Test
public void testIt2() {
if (assertionsEnabled) {
assert new DoublerImpl().testIt(1) == 2;
}
}
由于未启用断言,因此未执行任何代码。
要解决此问题,请改用内置的 JUnit 断言。