2017-05-18 11 views
5

JUnit 5 User Guide에 따르면 JUnit Jupiter는 마이그레이션을 지원하기 위해 일부 JUnit 4 규칙에 대한 하위 호환성을 제공합니다.JUnit 5의 ExternalResource 및 TemporaryFolder에 해당하는 항목은 무엇입니까?

위에서 설명한대로 JUnit Jupiter는 기본적으로 JUnit 4 규칙을 지원하지 않으며 지원하지 않습니다. 그러나 JUnit 팀은 많은 조직, 특히 대규모 조직이 사용자 정의 규칙을 포함하여 큰 JUnit 4 코드베이스를 가질 가능성이 있음을 알고 있습니다. 이러한 조직을 지원하고 점진적으로 마이그레이션 경로를 사용하기 위해 JUnit 팀은 JUnit Jupiter 내에서 JUnit 4 규칙을 그대로 사용하도록 지원하기로 결정했습니다.

가이드 중 하나는 이고, 이는 TemporaryFolder의 부모입니다.

그러나 유감스럽게도이 가이드는 마이그레이션 경로가 무엇인지 또는 새로운 JUnit 5 테스트 작성자에게 해당되는 내용이 무엇인지에 대해서는 언급하지 않습니다. 그럼 우리는 무엇을 사용해야합니까?

답변

1

Interesting article by author of TemporaryFolderExtension for JUnit5

his code repo on github

JUnit5.0.0 일반 릴리스 그래서 그들이 실험 재료 생산 준비하고 자신의 관심을 돌려 희망하자에 지금있다.

한편,이 TemporaryFolder 규칙이 여전히 JUnit5와 docs

사용을 작동 보인다이 :

@EnableRuleMigrationSupport 
public class MyJUnit5Test { 

을이 :

이 에게 이
<dependency> 
    <groupId>org.junit.jupiter</groupId> 
    <artifactId>junit-jupiter-migrationsupport</artifactId> 
    <version>5.0.0</version> 
</dependency> 
0

지금까지 내가 이해로,있을 수 있습니다 JUnit5의 ExternalResource에서 이에 상응하는 매핑은 없습니다. 개념은 적합하지 않습니다. JUnit4에서 ExternalResource은 기본적으로 beforeafter 콜백을 제공하지만 실제로는 beforeafter이 실제로 무엇을 의미하는지에 대해서는 제어 할 수 없습니다. @Rule 또는 @ClassRule과 함께 사용할 수 있습니다.

JUnit5에서 확장은 특정 extension points에 연결하여 'when'을 잘 정의하도록 정의됩니다.

개념의 또 다른 차이점은 JUnit4 규칙에서 상태를 가질 수 있지만 JUnit5 확장은 상태가 없어야한다는 것입니다. 대신 모든 주정부는 execution context으로 가야합니다.

public abstract class ExternalResourceExtension 
    implements BeforeTestExecutionCallback, AfterTestExecutionCallback { 
    @Override 
    public void beforeTestExecution(ExtensionContext context) throws Exception { 
     before(context); 
    } 

    @Override 
    public void afterTestExecution(ExtensionContext context) throws Exception { 
     after(context); 
    } 

    protected abstract void before(ExtensionContext context); 

    protected abstract void after(ExtensionContext context); 
} 
:

그럼에도 불구하고, 여기 beforeafter 각 시험 방법에 관한 내가 함께 온 옵션이며,