# Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么

**URL:** <https://www.isharkfly.com/t/junit-jupiter-api-junit-jupiter-engine/579>\
**Category:** DevOps\
**Tags:** junit, java\
**Created:** [October 12, 2020, 3:13pm UTC](https://www.isharkfly.com/t/junit-jupiter-api-junit-jupiter-engine/579 "2020-10-12T15:13:19Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [October 12, 2020, 3:13pm UTC](https://www.isharkfly.com/t/junit-jupiter-api-junit-jupiter-engine/579/1 "2020-10-12T15:13:19Z")

</div>

我们都知道 JUnit 是用于进行单元测试的。但是 Junit 5 和 Junit 4 的区别比较大。

很多时候你可能会遇到 Junit 引擎配置错误导致测试无法进行。

**junit-jupiter-api**  
JUnit 5 Jupiter API 的测试，你需要使用这个 API 来写测试和进行扩展。

**junit-jupiter-engine**  
JUnit 5 的测试引擎，从 Junit 5 开始，Junit 使用 jupiter 来作为测试引擎。在运行时（runtime）的时候，你需要使用这个引擎来进行测试。

**junit-vintage-engine**  
针对 Junit 5 以下的版本，包括 Junit 4 和 3，Junit 使用的是 vintage 测试引擎。

如果你的测试使用的是 Junit 4 的代码进行编写的话，那么你需要 Junit 4 的测试引擎。

## 总结

- 你需要 `junit-jupiter-api` 和 `junit-jupiter-engine` 来在 Junit 5 中书写和运行测试。

因此，你需要在你的 POM 中定义上面 2 个 Package。

 ![Junit-5and4-01](https://com-ossez-www-discourse.s3.dualstack.us-east-2.amazonaws.com/discourse-uploads/original/1X/0add44e6c0e6e11527c6cc5b55037c9e5ebe34ae.png)

针对老的 JUnit 4 的的项目，你需要将 `junit-jupiter-engine` 引擎替换为 `junit-vintage-engine` 引擎才能够让你的测试正式跑起来。
