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

2022-08-31 10:34:32

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


答案 1

如果要以编程方式决定要运行的“配置文件”,则可能是一个好主意。想想弹簧轮廓进行配置。在集成测试中,您可能希望针对其他数据库进行测试。

这是经过测试的代码

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

答案 2

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

如果你真的想这样做,你可以看看堆栈跟踪,但是由于你无论如何都要为此更改程序,所以你也可以在代码中引入一个新的静态布尔字段,并让JUnit将其设置为true。保持简单。isUnitTesting


推荐