2015-01-26 18 views
6

Projemizde Gradle ve TestNG'yi kullanmaya başladık, bu nedenle herhangi bir testin başarısız olmasının yapının gerçekten başarısız olup olmadığını kontrol ediyorum. Görmediğini görmek beni çok şaşırttı. Testler alınır ve doğru şekilde derlenir, bu yüzden sınıf dosyalarını görüyorum. Ayrıca koşunun bir raporunu alırım, ama 0 test diyor (beklenen 2). gradle clean test -i Koşu bana verir aşağıdadır:Gradle derler ancak TestNG testlerini çalıştırmaz

: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 içerir:

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" 
    } 
} 

Ben zaten orada bu konu hakkında other questions bir göz attım ve Bir çözüm olarak scanForTestClasses = false kullanmak için ipucu buldum (bkz. https://issues.gradle.org/browse/GRADLE-1682). Ancak, bu sorun ilgisiz görünüyor. Burada başka bir noob hatası mı yapıyorum? SuperSimpleTest'i nasıl yürütürüm?

GÜNCELLEME:

+0

Hisse örnek bir proje GH, lütfen. Yardım etmek daha kolay olacak. – Opal

+0

Üzgünüz, isteriz ama bu kodla bunu yapamazsınız. Gerçekten sadece basit bir şey unutma ya da bir şey bakmadığım bir çifte kontrol arıyorum. – titusn

+0

Son zamanlarda benzer bir sorunu çözdüm: http://stackoverflow.com/questions/28008918/gradle-not-running-testng-tests-even-with-test-usetestng/28077602#28077602, ancak @amorfis projeyi sorunu yeniden üretir. Burada zor olabilir:/ – Opal

cevap

14

Gradle complains about JUnit version on TestNG task Gerçekten aptal bir çaylak hata oldu: Ben bir sonucu olarak ilginç bir hata ile belirli bir testi çalıştırmak için gradle zorlayarak çalıştı. Kod ve testleri içeren bir ana proje ve aynı düzeyde birkaç klasör içeren çok projeli bir kurulum kullanıyoruz. build.gradle Ben yanlışlıkla sadece master projeyi TestNG kullanmak için yapılandırılmış kullanıyordum. Çözüm, test hedefini allprojects veya subprojects kapamasına dahil etmektir. Yani burada What is the difference between allprojects and subprojects

çalışma build.gradle geçerli:: Hangi burada açıklanmıştır

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('.') 
}