Gradle编译但不运行TestNG测试

我们刚刚开始在我们的项目上使用Gradle和TestNG,所以我正在检查是否有任何测试失败实际上会使构建失败。我很惊讶地发现事实并非如此。正确地拾取并编译了测试,因此我看到了类文件。我也得到了运行的报告,但是显示0个测试(预期2个)。跑步gradle

clean test -i给我以下内容:

:contentplatform-service:compileTestJava (Thread[Daemon worker Thread 7,5,main])

started.

:contentplatform-service:compileTestJava

Executing task ':contentplatform-service:compileTestJava' (up-to-date check took

0.08 secs) due to:

Output file D:\Dev\contentplatform-service\build\classes\test has changed.

Output file D:\Dev\contentplatform-service\build\dependency-cache has changed.

Output file D:\Dev\contentplatform-service\build\classes\test\nl\xillio\conten

tplatform\service\SuperSimpleTest.class has been removed.

All input files are considered out-of-date for incremental task ':contentplatfor

m-service:compileTestJava'.

Compiling with JDK Java compiler API.

:contentplatform-service:compileTestJava (Thread[Daemon worker Thread 7,5,main])

completed. Took 0.229 secs.

:contentplatform-service:processTestResources (Thread[Daemon worker Thread 7,5,m

ain]) started.

:contentplatform-service:processTestResources

Skipping task ':contentplatform-service:processTestResources' as it has no sourc

e files.

:contentplatform-service:processTestResources UP-TO-DATE

:contentplatform-service:processTestResources (Thread[Daemon worker Thread 7,5,m

ain]) completed. Took 0.001 secs.

:contentplatform-service:testClasses (Thread[Daemon worker Thread 7,5,main]) sta

rted.

:contentplatform-service:testClasses

Skipping task ':contentplatform-service:testClasses' as it has no actions.

:contentplatform-service:testClasses (Thread[Daemon worker Thread 7,5,main]) com

pleted. Took 0.001 secs.

:contentplatform-service:test (Thread[Daemon worker Thread 7,5,main]) started.

:contentplatform-service:test

Executing task ':contentplatform-service:test' (up-to-date check took 0.049 secs

) due to:

Output file D:\Dev\contentplatform-service\build\test-results\binary\test has

changed.

Output file D:\Dev\contentplatform-service\build\test-results has changed.

Output file D:\Dev\contentplatform-service\build\reports\tests has changed.

Finished generating test XML results (0.0 secs) into: D:\Dev\contentplatform-ser

vice\build\test-results

Generating HTML test report...

Finished generating test html results (0.014 secs) into: D:\Dev\contentplatform-

service\build\reports\tests

:contentplatform-service:test (Thread[Daemon worker Thread 7,5,main]) completed.

Took 0.194 secs.

SuperSimpleTest.java:

package nl.xillio.contentplatform.service;

import org.testng.Assert;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.Test;

@Test

public class SuperSimpleTest {

@BeforeClass

public void setUp() {

// code that will be invoked when this test is instantiated

}

@Test

public void testTest() {

Assert.assertEquals(true, true);

}

}

build.gradle包含:

test {

// enable TestNG support (default is JUnit)

useTestNG()

scanForTestClasses = false

include '**/*'

testLogging {

showStandardStreams = true

// log results to "build/test-results" directory

exceptionFormat "full"

events "started", "passed", "skipped", "failed", "standardOut", "standardError"

}

}

我已经看过有关此主题的其他问题,并且找到了scanForTestClasses =

false用作解决方法的提示(请参阅https://issues.gradle.org/browse/GRADLE-1682)。但是,此问题似乎无关。我在这里还有其他菜鸟错误吗?我怎样才能让SuperSimpleTest执行?

更新:我试图强迫gradle运行一个特定的测试,结果是一个有趣的错误:Gradle抱怨TestNG任务上的JUnit版本

回答:

这确实是一个愚蠢的菜鸟错误。我们正在使用一个多项目设置,其中包含一个主项目和几个位于同一级别的文件夹,其中包含代码和测试。在build.gradle我使用不慎唯一配置的主项目使用TestNG的。解决方案是将测试目标包含在allprojectssubprojects闭合内。这里解释:所有项目和子项目之间有什么区别

所以这里是工作build.gradle

def mainClassName = 'nl.xillio.contentplatform.view.Run'

// Load settings for all projects including master and subprojects

allprojects {

apply plugin: 'java'

apply plugin: 'eclipse'

version '0.1'

repositories {

mavenCentral()

maven {

url 'http://mvnrepository.com/maven2'

}

maven {

url 'http://download.java.net/maven/2'

}

}

}

// Load the dependencies for all subprojects (layers)

subprojects {

dependencies {

//to do: move these to the correct subprojects

compile 'javax.inject:javax.inject:1'

compile 'org.springframework:spring-context:4.1.4.RELEASE'

compile 'org.springframework:spring-core:4.1.4.RELEASE'

compile 'org.springframework:spring-beans:4.1.4.RELEASE'

compile 'commons-logging:commons-logging:1.2'

testCompile 'org.springframework:spring-test:4.1.4.RELEASE'

testCompile 'org.testng:testng:6.1.1'

}

test {

// enable TestNG support (default is JUnit)

useTestNG()

}

}

// Resolve the dependencies between the layers in the individual project's build.gradle files

// add ONLY specific per project behaviour of the GLOBAL build here:

project(':contentplatform-web') {

}

project(':contentplatform-service') {

}

project(':contentplatform-dao') {

}

// Return a list of all the external libraries

def getLibraries() {

return configurations.runtime.filter{!it.name.startsWith('contentplatform')}

}

// Copy all the libraries to a libs folder

task copyLibraries(type: Copy) {

group 'Content Platform'

description 'Copy all the external libraries to the /libs folder.'

destinationDir file('./build/')

into('libs/') {

from getLibraries()

}

}

// Perform the build task before building the big jar

jar {

group 'Content Platform'

description 'Package all the layers and dependencies into a big jar.'

// The libraries are required to build

dependsOn(copyLibraries)

// The final big jar needs all the layers

dependencies {

compile project(':contentplatform-web'), project(':contentplatform-dao'),

project(':contentplatform-service'), project(':contentplatform-model')

}

// Create a MANIFEST.MF file, the main class file is in the web layer

manifest {

attributes 'Implementation-Title': 'Content Platform',

'Implementation-Version': version,

'Built-By': System.getProperty('user.name'),

'Built-Date': new Date(),

'Built-JDK': System.getProperty('java.version'),

'Class-Path': getLibraries().collect{'../libs/' + it.getName()}.join(' '),

'Main-Class': mainClassName

}

// Include the layers in the fat jar

from(configurations.compile.filter{it.name.startsWith('contentplatform')}.collect{it.isDirectory() ? it : zipTree(it) }) {

exclude "META-INF/*.SF"

exclude "META-INF/*.DSA"

exclude "META-INF/*.RSA"

}

// Save the fat jar in the root of the folder instead of in build/libs

destinationDir file('.')

}

以上是 Gradle编译但不运行TestNG测试 的全部内容, 来源链接: utcz.com/qa/421380.html

回到顶部