본문 바로가기
Error

java.lang.Exception: Test class should have exactly one public zero-argument constructor:

by 지구 2020. 9. 22.

java.lang.Exception: Test class should have exactly one public zero-argument constructor:

 

public class MyTest {

    private MyConfig myPrimaryConfig;
    private MyConfig myRealUseConfig;
    public MyTest(MyConfig myPrimaryConfig, @Qualifier("myRealUseConfig") MyConfig myRealUseConfig) {
        this.myPrimaryConfig = myPrimaryConfig;
        this.myRealUseConfig = myRealUseConfig;
    }
    
    
    @Test
    public void 내꺼_테스트() { ... }
}

Spring 테스트코드를 작성하던 중에, 테스트 코드 내에 생성자를 저렇게 선언했더니 오류가 났다.

 

오류 내용을 읽어보면.. 빈 생성자를 생성하라고 적혀있길래... 이렇게도 해보고, 생성자 2개로도 해보고
@RunWith(SpringRunner.class) 말고 @RunWith(Parameterized.class) 로도 해봤는데 실패했다.ㅠㅠ

 

public MyTest() { }

 

Config 에서 같은 클래스에 Bean 주입을 다르게 했을 때..를 테스트하고 있던터라 어떡하나 하고 있었는데. 방법을 찾음!

public class MyTest {

    @Autowired
    private MyConfig myPrimaryConfig;
    @Autowired
    @Qualifier("myRealUseConfig")
    private MyConfig myRealUseConfig;
    
    
    @Test
    public void 내꺼_테스트() { ... }
}

그것은 바로 @Autowired 어노테이션을 사용하는 것 !!!!!

 

테스트코드말고 실제 서비스에서는 @Autowired 로 사용하면 물결이 생겨서 생성자로 풀어쓴건데 ㅠ_ㅠ
테스트코드는 왜 오류가 나는가..

 

어찌됐든 해결했으니 까먹지 않기위해 포스팅을 한다.

(혹시 지나가시다가 이유를 설명해주고 싶으시거나, 조언해주실게 있다면 편하게 말씀부탁드립니다 :))

반응형

댓글