Thread.sleep
을 테스트에 사용하는 것은 일반적으로 나쁜 생각입니다.
환경(내 환경에서는 통과!)이나 부하에 따라 예측할 수 없이 실패할 수 있는 불안정한 테스트를 생성합니다
타이밍에 의존하지 말거나(mock을 사용) Awaitility
와 같은 비동기 테스트 라이브러리를 사용하십시오.
규칙을 어긴 코드 예제
@Test
public void testDoTheThing(){
MyClass myClass = new MyClass();
myClass.doTheThing();
Thread.sleep(500); // 규칙을 어긴 코드
// assertions...
}
규칙을 준수한 해결책
@Test
public void testDoTheThing(){
MyClass myClass = new MyClass();
myClass.doTheThing();
await().atMost(2, Duration.SECONDS).until(didTheThing()); // 규칙을 준수한 해결책
// assertions...
}
private Callable<Boolean> didTheThing() {
return new Callable<Boolean>() {
public Boolean call() throws Exception {
// 충족되어야 하는 조건을 확인합니다...
}
};
}
If you like SONARKUBE, don’t forget to give me a star.