2010-07-12 5 views
1

Bien que j'aie essayé toutes les suggestions que j'ai trouvées, je ne peux toujours pas exécuter le test JUnit le plus trivial. Le message d'erreur répète fondamentalement en disant "junit.framework.AssertionFailedError: Aucun test trouvé dans project002.trivial.TestClassTest". Vous pouvez inspecter a snapshot of my IDE ou download the zipped project.JUnit 4.8.1/Maven test trivial ne fonctionne pas

Voici mon pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>project002</groupId> 
    <artifactId>project002</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 
    <name>project002</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <repositories> 
     <repository> 
      <id>EclipseLink Repo</id> 
      <url>http://www.eclipse.org/downloads/download.php?r=1&amp;nf=1&amp;file=/rt/eclipselink/maven.repo</url> 
     </repository> 
    </repositories> 
    <dependencies> 
     <dependency> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>4.7</version> 
       <scope>test</scope> 
      </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.1</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <encoding>UTF-8</encoding> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.5</version> 
       <configuration> 
        <junitArtifactName>org.junit:com.springsource.org.junit</junitArtifactName> 
        <includes> 
         <include>**/*Test.java</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Voici le message d'erreur:

------------------------------------------------------------------------------- 
Test set: project002.trivial.TestClassTest 
------------------------------------------------------------------------------- 
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.078 sec <<< FAILURE! 
warning(junit.framework.TestSuite$1) Time elapsed: 0 sec <<< FAILURE! 
junit.framework.AssertionFailedError: No tests found in project002.trivial.TestClassTest 
    at junit.framework.Assert.fail(Assert.java:47) 
    at junit.framework.TestSuite$1.runTest(TestSuite.java:97) 
    at junit.framework.TestCase.runBare(TestCase.java:134) 
    at junit.framework.TestResult$1.protect(TestResult.java:110) 
    at junit.framework.TestResult.runProtected(TestResult.java:128) 
    at junit.framework.TestResult.run(TestResult.java:113) 
    at junit.framework.TestCase.run(TestCase.java:124) 
    at junit.framework.TestSuite.runTest(TestSuite.java:232) 
    at junit.framework.TestSuite.run(TestSuite.java:227) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213) 
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115) 
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102) 
    at org.apache.maven.surefire.Surefire.run(Surefire.java:180) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350) 
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021) 

Répondre

10

Il y a quelque chose de mal avec votre testcase. Lorsque vous étendez Testcase, il sera toujours exécuté en utilisant Junit 3.x, vous devez donc préfixer votre méthode de test avec "test". Si vous voulez utiliser junit 4.x, supprimez "extends Testcase", puis annotez votre méthode de test avec @Test.

Celui-ci fonctionne en utilisant 3.x Junit, et il ne fonctionnera pas parce que votre méthode d'essai n'est pas préfixé par "test": -

public class TestClassTest extends TestCase { 

    @Test 
    public void isThisReallyTrue() { 
     assertTrue(true); 
    } 
} 

Celui-ci se déroulera dans Junit 4.x: -

public class TestClassTest { 

    @Test 
    public void isThisReallyTrue() { 
     assertTrue(true); 
    } 
} 
+0

Merci. Ça a presque marché. isThisReallyTrue() a été renommé en testIsThisReallyTrue() et comme assertTrue() est une méthode statique, j'ai dû l'adopter pour Assert.assertTrue(). Maintenant ça fonctionne bien! –

+0

@erlord, avec JUnit 4, il n'y a plus besoin de s'étendre de TestCase ou de préfixer vos noms de méthodes avec "test", tant que vous avez @Test –

+0

Salut Matt ... mais ça n'a * pas * fonctionné pour moi sans avoir le nom de la méthode préfixé par "test" ... –