当前位置: 首页 > 知识库问答 >
问题:

测试“记得”吗?独立性

萧芷阳
2023-03-14

我猜标题可能有点混乱,希望解释后你能理解我的问题。

我想用java编写一个JUnit测试类。我在构造函数中创建了一个空列表。假设一个测试方法将一个元素添加到该列表中,如果该列表中有1个元素则返回true。如果列表为空,另一个测试方法只返回true。测试是否相互独立工作?

共有1个答案

邓崇凛
2023-03-14

它取决于测试框架、版本和设置。

在JUnit 4中,一个类的单个实例用于运行该类中的所有测试。这意味着是的,测试记住了。

在JUnit 5中,默认情况下为每个测试创建一个新实例。这包括参数化测试——这就是(默认情况下)参数工厂方法需要是静态的原因,因为还没有实例提供参数。您可以使用TestInstance(Lifecycle.PER\u CLASS)将行为更改为再次对所有测试使用单个实例。

正如QBrute在评论中所说,测试应该独立工作。这意味着,如果测试类保持状态,则应重置该状态。JUnit 5在每个之前使用<代码>>,在每个之后使用<代码>>。最好在每次测试之前使用,因为状态重置失败不会导致另一次测试失败。

所以:

@BeforeEach
void initializeList() {
    myList = new ArrayList<>();
    // now every test has its own fresh list
}
 类似资料:
  • 一个项目将会自动生成测试运行。默认位置为: build/reports/androidTests 类似于 JUnit 的报告所在位置 build/reports/tests,其它的报告通常位于 build/reports/&lt;plugin>/ 这个路径也可以通过以下方式自定义: android { ... testOptions { reportDir = "$

  • 我总是问这个问题,但我找不到确切的答案: Docker平台独立吗? 我的意思是,当我在Windows中生成映像时,我能在Linux或macOS上运行该映像吗?或者当我在Ubuntu上生成映像时,我可以在Windows上运行该映像吗? 如果是,怎么做?如果不是,那么说docker映像可以在任何地方运行而不用担心任何依赖又有什么意义呢? 请帮我回答这个问题

  • 问题内容: 我有一些通过 Runtime.getRuntime.exec(String) 运行命令的代码,它可以在Windows上运行。当我将代码移至Linux时,它崩溃了,并且解决该问题的唯一方法是切换到 exec(String []) 版本。如果我这样处理,代码在Windows和Linux上是否可以相同,还是应该在Windows上使用exec(String)而在Linux上使用exec(Str

  • 排他性功能允许您通过附加到函数来仅运行指定的套件或测试用例.only()。这是仅执行特定套件的示例: describe('Array', function() { describe.only('#indexOf()', function() { // ... }); }); 注意:仍将执行所有嵌套套件。 以下是执行单个测试用例的示例: describe('Array', function()

  • 我有使用Selenium独立服务器运行的PHPUnit端到端测试。我的测试扩展了PHPUnit_Extensions_Selenium2TestCase,我使用$this设置浏览器- 谢谢

  • 本文向大家介绍你觉得单元测试可行吗相关面试题,主要包含被问及你觉得单元测试可行吗时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 可行,单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。事前可以保证质量,事后可以快速复现问题,并在修改代码后做回归自测。可行性考虑的是要用一些可行的方法做到关键的代码可测试,如通过边界条件、等价类划分、错误、因果,设计测试用例要覆盖常用的输入组