我有生产代码和测试代码。我想知道生产代码是否从单元测试运行。
答案 0 :(得分:2)
使用Java Stack Trace:
Thread.currentThread().getStackTrace()
这将返回一个StackTraceElements数组,您可以检查。例如,对于生产代码,最后一个元素应该是具有Java main方法的类。然而,通过单元测试,您应该最终获得测试运行员的类。
例如,在Eclipse中运行JUnit导致最后StackTraceElement
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
答案 1 :(得分:1)
我认为你需要一些方法来告诉生产代码是否已经从单元测试中调用它。
我想到了两种可能的方法:
假设代码在单个线程中运行,请使用ThreadLocal。
使用system property(例如System.setProperty(“testMode”,“ON”))。
无论如何,我同意Jack Maney的评论。在将污垢添加到生产代码之前重新考虑这一点。