>  기사  >  Java  >  AssertTimeout과 AssertTimeoutPreemptively의 주요 차이점은 무엇입니까?

AssertTimeout과 AssertTimeoutPreemptively의 주요 차이점은 무엇입니까?

WBOY
WBOY원래의
2024-07-16 11:42:42651검색

이 블로그 게시물에서는 이러한 방법의 주요 차이점이 무엇인지 설명하겠습니다. 우선 우리가 이 방법을 사용하는 이유는 무엇입니까? 이 방법은 방법 성능을 테스트하거나 방법을 완료하는 데 시간이 얼마나 걸리는지 알고 싶을 때 유용합니다.

이 방법은 어떻게 작동합니까?

먼저 테스트 방법에 시간을 주어야 하며 그 후에 이러한 테스트는 테스트에서 작업을 실행합니다. 이 작업이 지정된 것보다 오랜 시간이 걸리면 이 테스트는 실패합니다.

AssertTimeout과 AssertTimeoutPreemptively의 차이점

이제 우리는 이러한 방법이 무엇인지, 왜 테스트 방법에 사용하는지 알았습니다. 그렇다면 차이점을 알아야 합니다.

간단히 설명하겠습니다. AssertTimeout 메소드는 우리가 제공한 시간을 계산합니다. 테스트 메소드가 지정된 것보다 오래 걸리면 모든 작업이 완료된 후 이 테스트가 실패합니다. 그러나 AssertTimeoutPreemptively 메소드가 지정된 것보다 오래 걸리는 경우 이 메소드는 즉시 실패합니다. 그리고 모든 프로세스가 완료될 때까지 기다리지 않고 다음 단계의 프로젝트에서 이를 테스트할 것입니다.

시험

먼저 즐겨 사용하는 IDE를 엽니다. Intellij Idea를 열게 된 이유는 이 IDE가 Java 개발자들 사이에서 매우 인기가 있기 때문입니다. 물론 Eclipse, Netbeans 등 선호하는 IDE를 사용할 수 있습니다.

이제 새 Maven 프로젝트를 생성하고 pom.xml 파일에 이 두 가지 종속성을 추가하세요.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.3.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.3.1</version>
    <scope>test</scope>
</dependency>

이를 추가한 후 src/test/java 폴더를 열고

새 클래스를 만들고 원하는 이름을 지정합니다. TimeoutTest를 지정하겠습니다.

2개의 테스트 메서드를 만듭니다. 그 중 하나는 AssertTimeout을 테스트하고 다른 하나는 AssertTimeoutPreemptively를 테스트합니다.

assertTimeout and assertTimeoutPreemptively

그 후 기간을 지정하고 간단한 인쇄 메시지를 추가합니다.

Informational messages

Thread.sleep() 메서드를 추가하면 Thread가 8000ms(8초) 잠자기 상태가 됩니다. 하지만 이 두 가지 방법은 3초 이상 걸리기 때문에 실패하게 됩니다. 더 잘 이해할 수 있도록 이러한 방법을 테스트해 보겠습니다.

result of methods

testAssertTimeout 메서드는 모든 작업이 완료될 때까지 기다리기 때문에 8초 3ms가 걸리지만 다른 메서드는 3초 45ms가 걸리고 다른 프로세스가 완료될 때까지 기다리지 않습니다. , 즉시 실패합니다.

testAssertTimeout 메소드는 메시지를 인쇄하지만 AssertTimeoutPreemptively 메소드는 메시지를 인쇄하지 않고 다른 작업을 무시한다는 메시지를 볼 수 있습니다.

결론

이 게시물에서 우리는 AssertTimeout과 AssertTimeoutPreemptively의 주요 차이점에 대해 이야기했습니다.

드디어 Github에 코드가 공개되었습니다.

몸조심하시고 곧 만나요

위 내용은 AssertTimeout과 AssertTimeoutPreemptively의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.