当前位置: 首页 > 面试题库 >

@ Before,@ BeforeClass,@ BeforeEach和@BeforeAll之间的区别

姚浩歌
2023-03-14
问题内容

之间的主要区别是什么

  • @Before@BeforeClass
  • 和JUnit中5 @BeforeEach和@BeforeAll
  • @After@AfterClass
    根据JUnit @Before,在以下情况下使用Api:

编写测试时,通常会发现几个测试需要先创建类似的对象,然后才能运行。

@BeforeClass可以用来建立数据库连接。但是不能@Before一样吗?


问题答案:

标记的代码@Before在每次测试之前执行,而@BeforeClass在整个测试夹具之前运行一次。如果你的测试类有十个测试,则@Before代码将执行十次,但@BeforeClass仅执行一次。

通常,@BeforeClass当多个测试需要共享相同的计算昂贵的设置代码时,可以使用。建立数据库连接属于此类。你可以将代码从@BeforeClass移到@Before,但是测试运行可能需要更长的时间。注意,标记的代码@BeforeClass作为静态初始化程序运行,因此它将在创建测试夹具的类实例之前运行。

在JUnit 5中,标记@BeforeEach和与JUnit 4中@BeforeAll@Before和等效。@BeforeClass它们的名称更能指示它们的运行时间,并且松散地解释为:“在每个测试之前”和“一次在所有测试之前”。



 类似资料:
  • 之间的主要区别是什么 和 根据JUnit Api用于以下情况: 编写测试时,通常会发现一些测试在运行之前需要创建类似的对象。 而可用于建立数据库连接。但是以前的

  • 这两个注释都用于表示带注释的方法应该在当前测试类中的每个测试方法之前执行。 那么为什么我们要将注释从@BeforeClass-junit4更改为@beforecreach-Junit 5呢? JUnit5中添加了什么我没有的东西? 其他注释的情况类似。

  • 问题内容: 我刚刚看到了包含标签的CSS代码。我看着MDN看看是什么,但我真的不明白。 有人可以解释它是如何工作的吗? 它会在我们通过CSS选择之前创建DOM元素吗? 问题答案: 根据这些文档,它们是等效的: 唯一的区别是CSS3中使用了双冒号,而单冒号是旧版本。 推理: CSS 3中引入了:: before表示法,以便在伪类和伪元素之间建立区别。浏览器还接受:在CSS 2中引入的表示法。

  • 问题内容: 我们从TestNG官方文档中知道: 带注释的方法将在调用当前类中的第一个测试方法之前运行。 带注释的方法将在运行属于标签内部的类的任何测试方法之前运行。 上面的两个TestNG批注在功能上看起来都很相似。谁能解释这个独特的区别? 问题答案: SeleniumAbstractTest.class MyTestClass1.class MyTestClass2.class 如果您具有以下测

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。