【问题标题】:how to tell the difference between a JUnit @Before and the test如何区分 JUnit @Before 和测试
【发布时间】:2013-12-11 18:43:17
【问题描述】:

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

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

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

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

感谢任何帮助或指导 :)

【问题讨论】:

  • 你为什么要这样做?
  • “区分”是什么意思?两个地方的代码一样吗?
  • 你的意思是你想让代码在运行时知道它是从哪里调用的?或者你只是说你有一个异常,或者什么,你不知道问题出在哪个代码块?

标签: java unit-testing automated-tests junit4


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2016-09-19
    相关资源
    最近更新 更多