테스트 실행기 'JUnit 4'에서 발견 된 테스트가 없습니다.


105

내 Java 테스트는 Eclipse에서 잘 작동했습니다. 하지만 이제 실행 메뉴에서 테스트를 다시 시작하면 다음 메시지가 표시됩니다.

No tests found with test runner 'JUnit 4'

에서 .classpath파일 나는 모든이 jar파일을, 그리고 마지막에 있습니다 :

<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

이 오류를 해결하고 테스트를 다시 실행하려면 어떻게해야합니까?


1
테스트 내용 (또는 적어도 클래스 선언)을 게시 할 수 있습니까? 또한 당신은 "끝에있다 :"라고 썼습니다.
phtrivier

그것이 도움이 될 것입니다 ..이 일을 확인 stackoverflow.com/questions/22469480/junit-no-tests-found
프라 사드 VSV

들어 JUnit을 5 참조 여기
아난드 Rockzz

답변:


156

이것은 나에게 일어난 일입니다. Eclipse를 다시 빌드하거나 다시 시작해도 도움이되지 않았습니다.

테스트 방법 중 하나의 이름을 "test ..."(JUnit3 스타일)로 시작하여 해결 한 다음 모든 테스트를 찾았습니다. 이전의 이름으로 다시 이름을 변경했지만 여전히 작동합니다.


7
나는 testQuotes테스트로 시작하지 않는 다른 방법과 같은 방법을 가지고 있지만 여전히 테스트 없음 오류가 발생합니다
Rachel

1
을 확장하는 클래스에서 동일한 문제가 발생 junit.framework.TestCase했으며 내 메서드는 "test"로 시작해야했습니다. 를 확장하는 대신 TestCaseimport :를 추가했으며 import static org.junit.Assert.*;원하는 방식으로 메서드 이름을 지정할 수 있습니다. Bizarre ...
MrDrews

6
진지하게, 테스트에 @Test로 주석을 달아도 테스트 함수 이름 앞에 "test"를 붙여야합니까?
Brian Shotola

4
2015 및 Eclipse Luna도 해당 목록에 추가 할 수 있습니다. 실제로 많은 @Test 메서드는 여전히 접두사 "test"로 시작합니다. 나는 제거 , 하나 개의 테스트에 해당 접두어를 저장 한 다음 모든 테스트가 발견되었다. 나중에 다시 추가했고 모든 테스트가 계속 발견되었습니다. Eclipse가 모든 것을 재발견하도록 메소드 (파일?)를 변경하는 것이 더 많은 것 같습니다.
Brian White

2
Android Studio 2.1.1, 2016 년 5 월은 계속 작동합니다. 이 대답이 우주의 끝까지 효과가 있을지 궁금합니다.
Blueriver

42

이러한 오류가 발생하면 Eclipse가 혼란스러워 보입니다. Eclipse를 다시 시작하고 프로젝트를 새로 고치고 정리 한 다음 Eclipse에서 다시 빌드하고 다시 시도하십시오. 대부분의 경우 매력처럼 작동합니다.


1
Yep도 나를 위해 일했고 dlamblin에 동의합니다. 처음 5 분 동안 해결할 수없는 이상한 문제에 대해 항상 다시 시작해보십시오.
Thien

3
이 문제가 발생하여 테스트 클래스를 정의한 소스 파일을 닫고 네비게이터에서 해당 파일을 두 번 클릭하면 작동했습니다. 따라서 Eclipse를 다시 시작하지 않고도 파일을 닫고 다시 열 수 있습니다.
metamatt 2011 년

11
이것은 정말로 새로운 IDE를 찾고 싶게 만듭니다. 이것은 나를 위해 일했습니다.
Seth M.

1
프로젝트를 닫고 다시 열면 문제가 해결되었습니다!
Martin Charlesworth 2013 년

34

'test'디렉토리의 컨텍스트 메뉴에서 'Build path'-> 'Use as a source folder'를 선택합니다. Eclipse는 unitTests.java 파일을 소스 파일로 인식해야합니다. 'build'디렉토리에 unitTests.class 파일이 없기 때문에 'No JUnit tests found'경고가 발생합니다.


이것이 나를 위해 작동하는 솔루션입니다. 다시 시작이 작동하지 않습니다.
Andree 2012-08-11

"src"폴더가 아닌 "test"폴더가 있어야하기 때문에 이것이 내가 추구했던 것입니다. 나는 이것을 한 다음 다른 답변에서 제안한대로 프로젝트를 열고 닫았으며 이제 JUnit 테스트로 컴파일되고 실행됩니다. 감사!
quux00

프로젝트-> Java 빌드 경로-> 소스-> 테스트 폴더 추가를 선택하여 동일한 작업을 수행했습니다. 감사합니다!
Peter Clause

src / test / groovy가 이미 소스 폴더로 빌드 경로에있는 경우 제거하고 다시 추가하십시오. ... 제거하고 모든 테스트 파일에 @Test을 교체하는 것보다 더 쉬운
geneSummons

32

테스트 클래스가 "TestCase"를 확장하는지 확인하십시오. 그렇다면 해당 절을 제거하십시오. 클래스는 "TestCase"클래스에서 확장 할 필요가 없습니다. 내가 만난 대부분의 경우입니다.

public class MyTestCase extends TestCase{
  @Test
  public void checkSomething() {
    //...
  }
}
//Result> AssertionFailedError: No test Found in MyTestCase

TestCase를 따르는 것이 좋습니다.

public class MyTestCase {
  @Test
  public void checkSomething() {
    //...
  }
}
//Works fine

참으로 정답입니다. IntelliJ 및 JUnit 4.1로 테스트했으며 작동합니다!
Dio Phung 2014 년

내가 직면 한 문제는 Eclipse에서 JUnit 테스트가 잘 실행되지만 JAR로 내보낼 때 위의 오류가 발생한다는 것입니다. 어떤 아이디어?
tryingToLearn

요즘에는 반대인가요? "extends TestCase"를 추가하면 문제가 해결되었습니다.
Heinzlmaen

나를 위해 일했습니다 !!! 감사합니다
JRichardsz

27

나는 같은 문제에 직면했고 웹과 junit의 내부에서 나쁜 예를 디버깅했습니다. 기본적으로 Junit 4.x에 대한 몇 가지 예제가 보여 주듯이 클래스가 TestCase를 확장하도록 만들지 마십시오. 명명 규칙 테스트를 사용 하거나 주석이 필요한 경우 @RunWith (JUnit4.class)를 사용할 수 있습니다.

Assert 메서드에 액세스해야하는 경우 Assert를 확장하거나 정적 가져 오기를 사용합니다.

클래스가 TestCase를 확장하면 Junit 4 Runner를 사용하더라도 3으로 실행됩니다. 이는 초기화 코드에 감지가 있기 때문입니다.

JUnit3Builder 및 라인을 참조하십시오.

boolean isPre4Test(Class<?> testClass) {
    return junit.framework.TestCase.class.isAssignableFrom(testClass);
}

이것은 true를 반환하고 junit4 호환성 테스트가 시도되지 않습니다.


2
이것은 나를 위해 문제를 해결했습니다. Junit을 먼저 사용하는 방법에 대한 이전 예제를 살펴보면 잘못된 길로 인도됩니다.
Alex Kilpatrick

"클래스가 TestCase를 확장하면 Junit 4 Runner를 사용하더라도 3으로 실행됩니다"-이는 사실이 아닙니다 (적어도 Groovy 및 Intellij IDEA의 경우). JUnit 4.12를 사용하고 있으며 클래스에 @RunWith(JUnit4)"GroovyTestCase"로 주석을 달고 확장했습니다. @RunWith(JUnit4)나는 같은 문제에 직면 하지 않고 .
Veaceslav Gaidarji

동작은 2017 년 (JUnit 4.12)과 동일합니다.
sharmaap

5

추가 시도

이 같은 테스트 방법 위의 @Test

@Test
public void testParse()
{

}

5

또 다른 가능한 해결책은 다음과 같습니다. 에디터 창이나 패키지 탐색기에서 테스트 클래스를 실행할 수 없었지만 Outline보기에서 클래스 이름을 마우스 오른쪽 버튼으로 클릭하고 Run As JUnit을 선택했습니다. 테스트는 효과가 있었어 ... Go figure!


동일, 개요보기에서 작동하지만 다른 모든 것은 작동하지 않습니다. 3 개의 스택 오버플로 스레드에 게시 된 모든 솔루션을 시도했지만 아무 것도 작동하지 않습니다
MPSL

이것은 나에게도 효과적이지만 프로젝트 전체의 범위를 테스트하는 데는 쓸모가 없습니다.
rich

4

JUnit4에는 테스트 슈트가 없습니다. 대신 주석을 사용하거나 이전 JUnit3 이름 규칙을 사용하십시오.

예:

@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})

4

이것은 나에게도 일어났습니다. Eclipse를 다시 시작하고 테스트 방법에 테스트 접두사를 붙였습니다. 둘 다 작동하지 않았습니다.

다음 단계가 작동했습니다. @BeforeClass 및 @AfterClass에있는 모든 테스트 메서드를 정적 메서드로 변경합니다.

즉, 아래 형식의 테스트 방법이있는 경우 :

@BeforeClass
public void testBeforeClass(){
}

그런 다음 다음으로 변경하십시오.

@BeforeClass
public static void testBeforeClass(){
}

이것은 나를 위해 일했습니다.


4

나는 답을 찾았습니다.

Eclipse에서 독립형 테스트를 실행할 때이 오류가 발생했습니다 (메소드를 마우스 오른쪽 버튼으로 클릭하고 junit 테스트로 실행하도록 선택).

junit 테스트로 전체 클래스를 실행하면 테스트가 매개 변수로 올바르게 실행되었습니다.


3

이 문제에 직면하면 파일을 편집하고 저장하기 만하면됩니다.


1
안녕하세요, Stackoverflow에 오신 것을 환영합니다! :) 답변을 자세히 설명해 주시겠습니까?
Littm 2012 년

당신은 파일 (IT를 선택하고 F5) 새로 고침 의미 @Mahesh
Cassian

나는 스칼라에서 동일한 문제에 직면하고 있습니다. 즉, 내 테스트는 JUnit4 용으로 작성되었지만 스칼라에 있습니다. 그리고 @Mahesh가 제안했듯이 해결책은 컴파일러에게 킥을주는 것입니다. 파일을 편집 할 때 수행하는 작업은 중요하지 않으며 편집 만하면됩니다. 구문 오류가있는 내용을 입력하고 파일을 저장 한 다음 실행 취소하고 다시 저장합니다. 갑자기 내 테스트가 실행됩니다. 이것은 나에게 자주, 즉 적어도 매일, 보통 하루에 여러 번 발생합니다.
에릭 G. Hagstrom

3

내 문제는 선언 import org.junit.Test;이 사라 졌다는 것입니다 (또는 추가되지 않았습니까?). 추가 한 후 다른 import선언 을 제거해야했고 (Eclipse가 어떤 선언을하는지 알려줄 것입니다) 모든 것이 다시 작동하기 시작했습니다.


3

아주 늦었지만 문제를 해결 한 것은 내 테스트 메서드 이름이 모두 대문자로 시작되었다는 것입니다 : "public void Test". t를 소문자로 만들면 효과가 있습니다.


이것은 나를 위해 작동 ...하지만이 이상하게 혼란 솔루션입니다
Anchit 미탈에게

2

Germán의 솔루션을 시도했습니다. 내 수업의 모든 방법에서 작동했지만 프로젝트에 많은 수업이 있습니다.

그래서 빌드 경로에서 제거한 다음 다시 추가해 보았습니다. 완벽하게 작동했습니다.

도움이되기를 바랍니다.


2

6 년이 지난 후에도 Eclipse에는 여전히 문제가 있으며 때때로 JUnit을 찾지 못합니다.

내 Eclipse Mars 2 @Test에서 파일에 9 개 또는 10 개 이상의 주석이있는 경우 git에서 가져온 테스트 클래스를 인식하지 못함을 발견했습니다 . 추가 테스트를 주석 처리하고 테스트 클래스를 실행 한 다음 주석 처리를 해제하고 클래스를 다시 실행해야합니다. 그림을 이동...


이 답변은 유용합니다. 정확히 같은 상황이 아니었지만 테스트 방법 이름은 매우 유사했으며 Eclipse는이를 찾는 데 문제가있었습니다. testCase01, testCare02 ... testCase01을 실행하기 위해 다른 "testCasexx"메서드를 주석 처리해야했습니다. 그렇지 않으면 예외가 발생합니다. 모든 테스트 방법을 PUBLIC으로 설정하면이 문제가 해결 된 것 같습니다 !!
01000001

1

JUnit 실행 구성이 개별 테스트 클래스에 대한 것일 수 있으며, "소스 폴더, 패키지 또는 프로젝트에서 모든 테스트를 실행"하도록 구성을 변경했습니다.

그러나 "테스트 실행기 'JUnit 4'에서 발견 된 테스트 없음"오류 메시지가 트리거 될 수 있습니다.

또는 테스트 클래스를 수정하여 @Test주석을 제거했습니다 .
위키 페이지를 참조하십시오 .


@Test가 여기에 있습니다. 메시지는 다음과 같습니다. 메인 클래스 toto.lolo.testrunner를 사용할 수 없습니다 (실행 구성에
지정됨

@lamisse : 그래서 어떤 종류의 클래스 경로 문제입니까? 또는 syntex 문제는 : 그것은해야 toto.lolo.Testrunner하지 toto.lolo.testrunner( 'T')
VonC

@lamisse : "toto.lolo.Testrunner"가 TestRunner 클래스의 실제 이름입니까? 당신이 쓴 것입니까? 시작 구성의 클래스 경로에 프로젝트 / jar이 포함되어 있습니까?
phtrivier

1

JUnit 테스트를 실행하는 동안에도 동일한 문제가 발생했습니다. 주 테스트 기능 바로 위에 @Test 주석을 추가하여이 문제를 해결했습니다.


1

내 케이스를 고친 것은 @JamesG의 대답과 비슷했습니다. Eclipse를 다시 시작하고 프로젝트를 다시 빌드 한 다음 새로 고쳤습니다. 하지만 그 전에 먼저 프로젝트를 닫은 다음 (패키지 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭-> 프로젝트 닫기) 다시 열었습니다. 그런 다음 작동했습니다.

방금 설명한 최종 솔루션을 찾기 전에 찾은 해결 방법 : 테스트 클래스를 복사하고 테스트 클래스를 JUnit으로 실행합니다.


1

테스트가있는 폴더가 소스 폴더인지 확인하십시오. 그렇지 않은 경우 마우스 오른쪽 버튼을 클릭하고 소스 폴더로 사용하십시오.



1

또 다른 기회가 있습니다. Junit Test를 하위 버전 (예 : Junit 3)에서 Junit 4로 변경했을 수 있습니다. 아래 단계를 따르십시오.

1. Right Click on class
2. Select Run as >> "Run Configurations"
3. Check your "Test Runner" option in new window
4. If it not same as maven change it for example change it as Junit 4.

1

@Test테스트에 추가하십시오 .
주석으로 마우스를 가져갑니다.
'클래스 경로에 junit 4 라이브러리 추가'를 선택했습니다.


0

Eclipse 프로젝트 Maven 기반입니까? 그렇다면 m2eclipse 버전을 업데이트해야 할 수 있습니다.

참고 : 저는 Eclipse에 maven 기반의 프로젝트가 있으며 Eclipse의 "new maven project"마법사를 사용하여 처음에 생성되었습니다. 단위 테스트를 위해 JUnit 4.5를 사용하고 있으며 maven을 사용하여 명령 줄에서 테스트를 실행하고 JUnit 테스트로 실행을 사용하여 Eclipse에서 개별 테스트를 매우 행복하게 실행할 수 있습니다 .... 그러나 모든 테스트를 실행하려고 할 때 프로젝트 루트 노드에서 run as JUnit test ...를 호출하여 프로젝트에서 Eclipse는 " no tests found with test runner junit 4 "라고 불평했습니다 . m2eclipse를 m2eclipse 업데이트 사이트에서 최신 안정 개발 빌드로 업그레이드하여 해결되었습니다 (특히 Eclipse Galileo에서 버전 0.9.8.200905041414에서 버전 0.9.9.200907201116으로 업그레이드했습니다).

여기에서 : http://nuin.blogspot.com/2009/07/m2eclipse-and-junit4-no-tests-found.html


이해가 안 돼요. eclispe 버전과 관련이 있다고 생각하지 않습니다. 어제 테스트가 작동했지만 Junit 출시 팝업 때문에 지금은 그렇지 않습니다. 내 첫 번째 구성을 다시 설정하는 방법이 있습니까?
user281070

Lamisse, 나도 혼란스러워. 단위 테스트 실행이 작동하는시기와 작동하지 않는시기를 설명하기 위해 질문을 업데이트하는 것이 좋습니다.
b.roth

0

이것은 나에게도 일어났습니다. Eclipse에서 새로운 Java Class 파일을 만들지 않았으므로 컴파일되지 않은 것입니다. 코드가 아직 없으면 Java 클래스 파일로 복사 한 다음 컴파일하십시오.


0

Eclipse가 테스트 클래스가 다음에서 확장되는 경우에만 JUnit 3 스타일 테스트를 수행하는 것으로 나타났습니다. TestCase . 상속을 제거하면 주석이 저에게 효과적이었습니다.

.NET assert*과 같은 모든 필수 메서드 를 정적으로 가져와야합니다 import static org.junit.Assert.*.


0

명령 줄에서 mvn clean을 수행 한 다음 이클립스에서 project-> clean을 수행해야했습니다. 나는 미리 수업 이름을 바꾼 다음 다시 이름을 바꾸었지만 도움이되지 않았을 것입니다.


0

또한 Maven (m2e 1.4)과 함께 Eclipse를 실행하고 있습니다. 테스트는 Maven에서 실행되었지만 Eclipse에서는 실행되지 않았습니다 Maven>Update project.

내 해결책은 m2e가 생성 한 .classpath에 몇 줄을 추가하는 것이 었습니다. 이제 선이 고정됩니다.

<classpathentry kind="src" output="target/test-classes" path="src/test/java">
  <attributes>
    <attribute name="optional" value="true"/>
    <attribute name="maven.pomderived" value="true"/>
  </attributes>
</classpathentry>

0

나는 때때로이 문제가 있습니다. 나에게 가장 문제를 해결하는 것은 실행 구성에서 JUnit 테스트를 실행하는 것입니다. JUnit 4가 테스트 실행기로 설정되어 있는지 확인합니다.

일반적으로 패키지 탐색기의 컨텍스트 메뉴에서 Run As ... Junit 테스트를 시도 할 때이 문제가 발생합니다. 실행하려는 테스트의 코드를 마우스 오른쪽 버튼으로 클릭하고 Run As ... Junit Test를 선택하는 대신 Run configuration ...을 선택하면 프로젝트, 테스트 클래스 및 테스트 실행기가 올바르게 설정되었는지 확인하고 적용을 클릭 한 다음 실행합니다. 나를 위해 항상 작동합니다.


0

저는 제 직장에서 Selenium과 Eclipse로 작업하기 시작했고 첫 번째 자동 테스트를 수행하고 있었고 @Before, @Test 및 @After 메모 코드에서 삭제했으며 "No tests found with test runner junit4"문제가 발생했습니다. .

내 솔루션은 단순히 @Before, @Test 및 @After 메모를 다시 추가하는 것이었고 스크립트가 작동했습니다. 코드에서 이것을 삭제하지 않는 것이 중요합니다.

이것은 Google을 사용하여 무언가를 검색하는 간단한 테스트입니다.

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;

import org.junit.*;

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class TestingClass {

    private WebDriver driver;
    //Creates an instance of the FirefoxDriver
    **@Before**
    public void SetUp() throws Exception {
        driver = new FirefoxDriver();
    }

    **@Test**   
    //Search using keyword through Google Search
    public void TestTestClass2 () throws Exception {
        driver.get("http://www.google.com.mx/");
        driver.findElement(By.name("q")).sendKeys("selenium");
        Thread.sleep(10000);
        driver.findElement(By.name("btnG")).click();
        Thread.sleep(10000);
    }

    //Kill all the WebDriver instances
    **@After**
    public void TearDown() throws Exception {
        driver.quit();
    }

}

0

ScalaIDE (3.0.4-2.11-20140723-2253-Typesafe)를 사용하면 Right Click Scala Test Class-> Run As -> Scala Junit Test상황에 맞는 메뉴 와 비슷한 문제가 발생했습니다 .

클래스 편집 (컴파일 실패가 아님), 청소, 프로젝트 닫기, Eclipse 닫기를 시도했습니다. 이전에 잘 작동했던 클래스의 상황에 맞는 메뉴를 복원하는 작업은 없었습니다. 테스트 클래스는 @Test주석을 사용하지 않고 대신 @RunWith(classOf[JUnitRunner])ScalaTest 코드를 사용하여 클래스 상단의 주석을 사용합니다.

내가 선택을 시도했을 때 Scala Junit TestRun Configuration 시작 편집기에서 직접 질문에서 대화 상자를 받았습니다. Footix29의 대답은 저에게 핵심이었습니다.

프로젝트를 몇 번 정리했지만 / bin 디렉토리의 클래스가 실제로 한동안 다시 빌드되지 않은 것을 알았습니다.

컨텍스트 메뉴로 돌아가서 다시 한 번 Scala Junit Tests를 실행할 수있는 방법은 다음과 같습니다 .

  • manually 삭제하여 클래스 정리 /bin/<package dir>*탐색기를 통해
  • Project -> Clean전체 재 구축과 함께 프로젝트 편집

나는 일반적으로 클래스 편집이 Eclipse의 저장된 상태를 정리하고 다시 시작할 수 있다고 생각합니다. 제 경우에는 이전에 시도한 모든 작업 클래스가 실패 했으므로manual 깨끗한 단계는 제가 필요한 망치였습니다. 그러나 Eclipse의 클래스 경로 / 빌드 상태 개념에 영향을주는 다른 트릭도 작동해야합니다.

또한이 동작은 초기 파일 변경 후 모든 정리가 수동으로 수행되는 Scala 클래스의 이름을 변경하여 (Scala Eclipse IDE가 짜증나는) Scala 클래스를 리팩토링하려고 시도함으로써 부분적으로 트리거되었다고 생각합니다. 빌드 오류는 없었지만 Eclipse의 빌드 상태 정보에 무언가가 확실히 붙어 있다는 것을 의미하는 경고도 없었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.