如何区分JUnit @Before和测试之间的区别

时间:2013-12-11 18:43:18

标签: java unit-testing automated-tests junit4

我希望能够区分在JUnit @Before方法中执行的代码与在实际测试中执行的代码之间的区别。

我已经考虑扩展TestWatcher,但是在@Before开始执行之前调用了启动(描述)方法,而不是在测试开始之前调用。

理想情况下,我正在寻找这种情况:

A: [arbitrary code]
B: JUnit @Before method
C: [more arbitrary code]
D: JUnit @Test method

感谢任何帮助或指导:)

1 个答案:

答案 0 :(得分:0)

如果您尝试根据测试是初始化还是正在运行而动态改变代码行为,您可以尝试获取当前线程的堆栈跟踪并逐步执行这些帧,直到您找到一个方法注释为@Test@Before(或@BeforeClass)。

或者,您可以创建一个新的测试类运行器(可能会扩展BlockJUnit4ClassRunner)并使用@RunWith(MyTestClassRunner.class)注释您的测试类以使用它。关于如何执行此操作的好文章在此处:http://tedyoung.me/2011/01/23/junit-runtime-tests-custom-runners/