[JUnit] java.lang.Exception: No runnable methods

MEUN·2022년 1월 15일
0

🔒 상황

Spring Framework를 사용해서 JUnit의 테스트 메소드를 작성한 뒤, 해당 테스트 클래스의 main 메소드를 작성하여 실행할 경우 아래와 같이 오류가 발생하였다.
(JUnit의 버전은 4.7이다.)

작성한 코드

    public static void main(String[] args) {
        JUnitCore.main("com.study.TestClass"); // 테스트 클래스의 경로를 파라미터로 넘김
    }

실행 후 오류

JUnit version 4.7
.E
Time: 0.009
There was 1 failure:
1) initializationError(com.study.TestClass)
java.lang.Exception: No runnable methods
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:171)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:115)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:269)
at org.junit.runners.ParentRunner.(ParentRunner.java:66)
at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:59)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runner.Computer.getRunner(Computer.java:38)
at org.junit.runner.Computer$1.runnerForClass(Computer.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:93)
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84)
at org.junit.runners.Suite.(Suite.java:79)
at org.junit.runner.Computer.getSuite(Computer.java:26)
at org.junit.runner.Request.classes(Request.java:69)
at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:98)
at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:53)
at org.junit.runner.JUnitCore.main(JUnitCore.java:45)
at com.study.TestClass.main(UserDaoTest.java:42)
FAILURES!!!
Tests run: 1, Failures: 1
Process finished with exit code 1


🔑 해결방법

테스트 메소드 위에 작성한 @Test Annotation을 사용하기 위하여 올바른 클래스가 import 되었는지 확인한다.

Before

import org.testng.annotations.Test;

After

import org.junit.Test;

이후 다시 main 메소드를 실행하면 콘솔에 아래와 같이 정상적으로 종료되었다는 출력이 조회된다.

JUnit version 4.7
Time: 4.286
OK (1 test)
Process finished with exit code 0


📕 느낀 점

Maven 의존성을 추가하면서 테스트 메소드를 작성하다 보니 의존성이 완전히 추가되기 전에 어노테이션을 사용해서 문제가 발생했던 것 같다.
Annotation을 추가할 때 내가 원하는 path에 있는지 확인하고 사용해야겠다고 다시 한 번 깨달았다.


0개의 댓글