2010-07-12 5 views
1

내가 찾은 모든 제안을 시도했지만 가장 간단한 JUnit 테스트를 실행할 수는 없습니다. 오류 메시지는 기본적으로 "junit.framework.AssertionFailedError : project002.trivial.TestClassTest에 테스트가 없습니다"라는 메시지를 반복합니다.JUnit 4.8.1/Maven 사소한 테스트가 작동하지 않음

a snapshot of my IDE 또는 download the zipped project을 검사 할 수 있습니다.

다음
<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> 

오류 메시지입니다 :

여기 내 pom.xml 파일입니다

당신의 테스트 케이스에 문제가있다
------------------------------------------------------------------------------- 
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) 

답변

10

. Testcase를 확장하면 Junit 3.x를 사용하여 항상 실행되므로 테스트 메소드에 "test"를 접두어로 사용해야합니다.

junit 4.x를 사용하려면 "extends Testcase"를 제거한 다음 테스트 메소드에 @Test로 주석을 추가하십시오.

이 하나의 JUnit 3.x를을 사용하여 실행 및 테스트 방법은 "테스트"로 시작하지 않기 때문에이 작동하지 않습니다 : -

public class TestClassTest extends TestCase { 

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

의 JUnit 4.x의에서 실행이 하나 -

public class TestClassTest { 

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

감사합니다. 거의 효과가있었습니다. isThisReallyTrue()는 testIsThisReallyTrue()로 이름이 바뀌었고 assertTrue()는 정적 메서드이므로 Assert.assertTrue()에 적용해야했습니다. 이제 제대로 작동합니다! –

+0

@erlord, JUnit 4, 더 이상 TestCase에서 확장하거나 @Test –

+0

안녕 Matt ...가있는 한 메서드 이름 앞에 "test"를 붙일 필요가 없습니다. 메서드 이름 앞에 "test"가 붙지 않고 ... –

관련 문제