[SPRING] Junit에서 @Autowired 주석과 함께 @InjectMocks를 사용하는 방법
SPRINGJunit에서 @Autowired 주석과 함께 @InjectMocks를 사용하는 방법
autowiring과 함께 3 가지 클래스를 사용하는 클래스 A가 있습니다.
public class A () {
@Autowired
private B b;
@Autowired
private C c;
@Autowired
private D d;
}
그 (것)들을 테스트하고있는 동안, 나는 단지 2 개의 종류 (B & C)를 가짜로 삼고 싶고 클래스 D를 Autowire로 정상적으로 실행하고 싶습니다.이 코드는 저를 위해 작동하지 않습니다 :
@RunWith(MockitoJUnitRunner.class)
public class aTest () {
@InjectMocks
private A a;
@Mock
private B b;
@Mock
private C c;
@Autowired
private D d;
}
그렇게 할 수 있습니까?
해결법
-
==============================
1.그것은 뭔가와 같아야합니다.
그것은 뭔가와 같아야합니다.
@RunWith(SpringJUnit4ClassRunner.class) public class aTest () { @Mock private B b; @Mock private C c; @Autowired @InjectMocks private A a; }
D를 Autowired로 설정하려면 Test 클래스에서 아무 것도하지 않아도됩니다. Autowired A는 D의 정확한 인스턴스를 가져야합니다. 또한 contextConfiguration이 올바르게 설정된 상태에서 Autowiring을 위해 SpringJUnit4ClassRunner를 사용해야한다고 생각합니다. 당신이 MockitoJunitRunner를 사용하지 않기 때문에 당신은 당신 자신의 모의 객체를 스스로 초기화해야합니다.
-
==============================
2.나는 같은 문제에 직면했고 Sajan Chandran의 대답을 시도했다. 내 모든 콩의 하위 집합 만로드하기 위해 @SpringBootTest 주석을 사용하고 있기 때문에 제 경우에는 작동하지 않았습니다. 목표는 다른 종속성과 구성이 많기 때문에 조롱하는 콩을로드하지 않는 것입니다.
나는 같은 문제에 직면했고 Sajan Chandran의 대답을 시도했다. 내 모든 콩의 하위 집합 만로드하기 위해 @SpringBootTest 주석을 사용하고 있기 때문에 제 경우에는 작동하지 않았습니다. 목표는 다른 종속성과 구성이 많기 때문에 조롱하는 콩을로드하지 않는 것입니다.
그리고 나는 정상적인 경우에도 사용할 수있는 다음 변형 된 솔루션을 찾았습니다.
@RunWith(SpringRunner.class) @SpringBootTest(classes={...classesRequired...}) public class aTest () { @Mock private B b; @Mock private C c; @Autowired @Spy private D d; @InjectMocks private A a; @Before public void init(){ MockitoAnnotations.initMocks(this); } }
from https://stackoverflow.com/questions/34067956/how-to-use-injectmocks-along-with-autowired-annotation-in-junit by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring의 Json 응답 시간대 문제 (0) | 2019.07.13 |
---|---|
[SPRING] MockRestServiceServer로 RestTemplate을 조롱하는 법? (0) | 2019.07.13 |
[SPRING] @jobscope 빈을 Spring batch에서 분할 단계로 액세스 (0) | 2019.07.13 |
[SPRING] Spring 데이터 나머지 @EmbeddedId는 Post 요청에서 생성 할 수 없습니다. (0) | 2019.07.13 |
[SPRING] Spring 설정에서 빈 arraylists를 초기화 하시겠습니까? (0) | 2019.07.13 |