Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何区分测试之前的JUnit@和测试之间的区别_Java_Unit Testing_Automated Tests_Junit4 - Fatal编程技术网

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

Java 如何区分测试之前的JUnit@和测试之间的区别,java,unit-testing,automated-tests,junit4,Java,Unit Testing,Automated Tests,Junit4,我希望能够区分在JUnit@Before方法中执行的代码与在实际测试中执行的代码之间的差异 我已经研究过扩展TestWatcher,但是starting(Description)方法是在@before开始执行之前调用的,而不是在测试开始之前调用的 理想情况下,我正在寻找这种情况: A: [arbitrary code] B: JUnit @Before method C: [more arbitrary code] D: JUnit @Test method 任何帮助或指导都非常感谢:)如果您

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

我已经研究过扩展TestWatcher,但是starting(Description)方法是在@before开始执行之前调用的,而不是在测试开始之前调用的

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

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

任何帮助或指导都非常感谢:)

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


或者,您可以创建一个新的测试类运行程序(可能扩展
BlockJUnit4ClassRunner
),并使用
@RunWith(MyTestClassRunner.class)
注释您的测试类以使用它。这里有一篇关于如何做到这一点的好文章:

你为什么要这样做?你说的“区别”是什么意思?这两个地方的代码是否相同?您的意思是希望代码在运行时知道从何处调用它?或者你只是说你遇到了一个异常,或者什么,你不知道问题出在哪一块代码中?