如何确定代码是否在 JUnit 测试中运行?

新手上路,请多包涵

在我的代码中,仅当它在 JUnit 测试中运行时我才需要进行某些修复。如何确定代码是否在 JUnit 测试中运行?是否有类似 JUnit.isRunning() == true 的东西?

原文由 Dr. Max Völkel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 390
2 个回答

如果您想以编程方式决定运行哪个“配置文件”,这可能是个好主意。考虑用于配置的 Spring Profiles。在集成测试中,您可能希望针对不同的数据库进行测试。

这是经过测试的有效代码

public static boolean isJUnitTest() {
  for (StackTraceElement element : Thread.currentThread().getStackTrace()) {
    if (element.getClassName().startsWith("org.junit.")) {
      return true;
    }
  }
  return false;
}

原文由 Janning 发布,翻译遵循 CC BY-SA 4.0 许可协议

首先,这可能不是一个好主意。您应该对实际生产代码进行单元测试,而不是稍微不同的代码。

如果你真的想这样做,你可以查看堆栈跟踪,但由于你正在为此更改你的程序,你不妨在你的代码中引入一个新的静态布尔字段 isUnitTesting 并且有JUnit 将其设置为 true。把事情简单化。

原文由 Thilo 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题