2013-04-04 49 views
-1

我有生产代码和测试代码。我想知道生产代码是否在单元测试中运行。确定代码是否从单元测试运行的编程方法

+0

我不知道你在问什么。 – djechlin 2013-04-04 19:09:24

+4

你应该退后一步,真正想想为什么你认为你需要这个。单元测试的其中一点是,你正在检查代码的一小部分**,就像它在生产**一样。 – 2013-04-04 19:15:49

回答

2

使用Java堆栈跟踪:

Thread.currentThread().getStackTrace() 

这将返回的StackTraceElements您可以检查数组。例如,对于您的生产代码,最后一个元素应该是具有Java主方法的类。而在单元测试中,你最终应该选择一个测试跑步者的班级。

例如在Eclipse中运行JUnit导致这最后StackTraceElement

org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
1

我假设您需要某种方式从生产代码中判断是否从单元测试中调用它。

我心里有2点可能的办法:

  1. 假设代码在单个线程上运行,使用ThreadLocal

  2. 使用system property(例如System.setProperty(“testMode”,“ON”))。

无论如何,我同意Jack Maney的评论。在将灰尘添加到生产代码之前重新考虑这一点。

相关问题