JUnit 5中的容器是什么



当前https://junit.org/junit5/docs/current/user-guide在没有定义容器的情况下使用容器一词大约50次。

测试类和容器之间的区别是什么?一个容器可以在多个类中吗?一个类可以有多个容器吗?(例如嵌套类(。

让我作为JUnit5团队的原始成员之一插话。。。

JUnit5作为一个平台,允许容器和测试的深度嵌套树。您甚至可以拥有既是测试(=单独运行它是有意义的(又是容器(=它有子级(的节点。任何测试引擎的测试树的根始终是引擎容器。有一件重要的事情需要知道:没有孩子的容器本身也不是测试,它们将被修剪而不运行!

至于Jupiter,你有类和嵌套类作为容器,测试方法作为测试。不过,考虑一下动态测试的情况,我认为带注释的方法是一个测试,但它也会创建很多孩子,这些孩子本身就是测试。所以它也是一个容器。

其他测试引擎可能会决定为包和父包创建容器。

我想这里的容器是包含测试的东西:(

如果您在任何侦听器中调试executionStarted方法,您将看到名为"[engine:junitjupiter]"的顶级容器(用于标准运行程序或您正在使用的任何其他引擎名称(。

然后您将看到一个测试类(每个类都是容器(。如果您使用"嵌套"(我的意思是@Nested测试(功能,那么您的上层测试也将显示为容器。

您可以通过创建自己的引擎和覆盖测试发现机制来添加更多级别。

测试类基本上是一个简单的java类,您可以在其中编写所有测试用例/方法(使用@test注释(。


测试容器就像一个沙盒,您的测试用例将在其中运行。这个@RunWith注释创建用于模拟的测试容器。

做一些类似的事情:


@RunWith(SpringJUnit4ClassRunner.class)
public class Test {
@Test
public void test(){
//your test
}
}

SpringJUnit4ClassRunner允许您在容器中部署测试。

下面提到了其他流行的测试容器。

  1. MockitoJUnitRunner
  2. 层次结构ContextRunner
  3. Avh4的嵌套
  4. NitorCreation的NestedRunner
  5. Arquillian

相关内容

最新更新