이 블로그 게시물에서는 이러한 방법의 주요 차이점이 무엇인지 설명하겠습니다. 우선 우리가 이 방법을 사용하는 이유는 무엇입니까? 이 방법은 메소드 성능을 테스트하거나 메소드를 완료하는 데 시간이 얼마나 걸리는지 알고 싶을 때 유용합니다.
먼저 테스트 메서드에 시간을 주어야 하며 그 후에 이러한 테스트는 테스트에서 작업을 실행합니다. 이 작업이 지정된 것보다 오랜 시간이 걸리면 이 테스트는 실패합니다.
자 이제 우리는 이러한 방법이 무엇인지, 왜 테스트 방법에 사용하는지 알았습니다. 그렇다면 차이점을 알아야 합니다.
간단히 설명하겠습니다. AssertTimeout 메소드는 우리가 제공한 시간을 계산합니다. 테스트 메소드가 지정된 것보다 오래 걸리면 모든 작업이 완료된 후 이 테스트가 실패합니다. 그러나 AssertTimeoutPreemptively 메소드가 지정된 것보다 오래 걸리는 경우 이 메소드는 즉시 실패합니다. 그리고 모든 프로세스가 완료될 때까지 기다리지 않고 다음 단계의 프로젝트에서 이를 테스트할 것입니다.
먼저 즐겨 사용하는 IDE를 엽니다. Intellij Idea를 열게 된 이유는 이 IDE가 Java 개발자들 사이에서 매우 인기가 있기 때문입니다. 물론 Eclipse, Netbeans 등 선호하는 IDE를 사용할 수 있습니다.
이제 새 Maven 프로젝트를 만들고 pom.xml 파일에 다음 2개의 종속성을 추가하세요.
org.junit.jupiter junit-jupiter-api 5.3.1 test org.junit.jupiter junit-jupiter-engine 5.3.1 test
이를 추가한 후 src/test/java 폴더를 열고
새 클래스를 만들고 원하는 이름을 지정하세요. TimeoutTest를 지정하겠습니다.
2개의 테스트 메서드를 만듭니다. 그 중 하나는 AssertTimeout을 테스트하고 다른 하나는 AssertTimeoutPreemptively를 테스트합니다.
그 후 기간을 지정하고 간단한 인쇄 메시지를 추가합니다.
Thread.sleep() 메서드를 추가하면 Thread가 절전 모드로 전환됩니다. 8000ms(8초) 하지만 이 두 가지 방법은 3초 이상 걸리기 때문에 실패하게 됩니다. 더 잘 이해하기 위해 이러한 방법을 테스트해 보겠습니다.
그리고 testAssertTimeout 메소드는 모든 작업이 완료될 때까지 기다리기 때문에 8초 3ms가 걸리지만 다른 메소드는 3초 45ms가 걸리고 다른 프로세스가 완료될 때까지 기다리지 않습니다. , 즉시 실패합니다.
testAssertTimeout 메소드가 메시지를 인쇄하지만 AssertTimeoutPreemptively 메소드는 메시지를 인쇄하지 않고 다른 작업을 무시한다는 메시지를 볼 수 있습니다.
이 게시물에서 우리는 AssertTimeout과 AssertTimeoutPreemptively의 주요 차이점에 대해 이야기했습니다.
드디어 Github에서 코드를 사용할 수 있습니다.
몸조심하시고 곧 만나요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3