"Thread.sleep" 은 테스트에서 사용되면 안 됩니다.

 

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. :star2:

원문으로 바로가기

Star This Project