java - 为什么执行一组测试会得到与单独执行不同的结果?

标签 java intellij-idea junit kotlin

我有两个测试。如果我告诉 Intellij 对它们进行测试(即测试包含它们的 junit 类),测试 2 将失败。如果我只运行测试 1,它就会通过。如果我随后运行测试 2,它就会通过。您知道为什么会出现这种差异吗?

我已经告诉测试 1 在测试结束时等待 10 秒,以大致模拟我手动执行测试 1 和测试 2 之间的间隙。

谢谢。

最佳答案

如果没有源代码可供查看,简单的答案是:您的测试不是独立的。

含义:它们通过某种共享资源以某种方式连接起来。每个测试都取决于该资源处于某种状态,但不知何故,您的清理工作要么丢失,要么“不够好”。例如,当您仅初始化 stub /模拟一次(在第一次启动之前),而不是每次测试一次时,就会发生这种情况。最坏的情况是,依赖关系位于生产代码中的某个地方(深处),例如某个类上的静态字段,该字段在执行第一个测试时被初始化,从而导致问题当第二个测试“到来”时。

对于任何更具体的(基于代码的)建议,您必须分别分享您的测试mcve与我们一起。

关于java - 为什么执行一组测试会得到与单独执行不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51448489/

相关文章:

java - 如何在 REST assured 中调用 put 方法

java - 使用java中的泛型删除冗余代码

java - 更改 javax.json.JsonArray 中 json 元素的值

java - 通过反射将基类转换为派生类

java - 部署maven项目到tomcat

java - "argline"参数在 Maven Surefire Eclipse JUnit 中不起作用

java - 是否可以在命令行中指定额外的 Maven 依赖项?

java - Intellij 无法在类路径中找到类

java - 如何在 MacO 下设置 Idea

java - 使用 Junit 测试抛出异常的方法