Difference between junit-vintage-engine and junit-jupiter-engine?

情到浓时终转凉″ 提交于 2020-03-23 11:55:09

问题


It's a two-fold question.

  1. What is the difference between junit-vintage-engine and junit-jupiter-engine?
  2. SpringBoot starter projects come with an exclusion for junit-vintage-engine. Is it to enforce the use of junit-jupiter-engine?

Below is the dependency of my SpringBoot project generated from Spring Initializr:

        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

回答1:


junit-vintage-engine is used for running JUnit 4 tests; junit-jupiter-engine for JUnit 5 tests.

Presumably since you'll be writing only JUnit 5 tests for a new Spring Boot project, the vintage engine won't be needed, hence the default dependency exclusion in the POM.

Reference:

https://junit.org/junit5/docs/current/user-guide




回答2:


Answer : 1. Based on reading i found some difference like,

junit-vintage-engine :

  • Used in Junit-4 Testing.
  • Used to call core classes and annotations.
  • 'Assert' which provide assertion methods for performing test.
  • 'Assume' used to place assumptions.
  • Use annotation like, @Ignore, @Before, etc...

junit-jupiter-engine :

  • Used in Junit-5 Testing
  • Provide some API which helpful to write test cases.
  • 'Assertions' provides utility methods of assertion condition for testing.
  • 'Assumptions' - utility method provide condition based on assumption.
  • Change the bit of annotation name like, @Disable, @BeforeAll, @BeforeEach, etc...

Answer : 2. I'm also amazed they are still providing older vintage library probably there is some reason which i don't know till now but based on current usage we'll see that in next update.

Have a nice day!!! :)




回答3:


First question is also related with the version of JDK. To be able to use jupiter engine, you must have Java 8 or higher. For second question; since the vintage engine is for JUnit4 and JUnit4 is greater than 10 years old, it is not recommended to be used. As far as I know, it has not been updated along this time although java has been evolved so much. I think that is why spring initializers enforce the use of junit-jupiter-engine.



来源:https://stackoverflow.com/questions/59193282/difference-between-junit-vintage-engine-and-junit-jupiter-engine

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!