2012-02-28 64 views

回答

2

RunNotifier由执行测试的类调用。它调用每个RunListener进行测试(可以有多个)。如果您正在实施自己的Runner,则可能需要实施自己的RunNotifier,但一般情况下您不需要。它是Runner,它调用RunNotifier,后者又调用每个RunListener

如果您正在实施自己的亚军,请看JUnitCore,它几乎可以满足您的任何需求。然后对于每次测试失败,您都可以调用RunNotifier。如果您从JUnitCore继承,那么大多数方法已经存在。

如果您只是想了解测试进度,请使用RunListener

+0

感谢您的回复!我遇到的问题是,JUnitCore无法停止测试(pleaseStop())。所以我想实现一个叫RunNotifier的Runner来阻止Testrun。但是,我再次无法将RunListener添加到RunNotifier(addListener等仅用于内部使用)或Runner中。所以我的问题是,我可以像自定义RunListener一样处理自定义RunNotifier,只是覆盖它的函数,然后在测试失败,成功等时自动调用它们。 – ctekk 2012-02-29 09:30:18

+2

不,您不能简单地替换RunNotifier。如果您查看JUnitCore的源代码(https://github.com/KentBeck/junit/blob/master/src/main/java/org/junit/runner/JUnitCore.java),则可以看到RunNotifier不是'不可替换。要使用@RunWith或类似的,你必须实现你自己的亚军。如果你想停止测试,这是一个特定的问题,我会问更详细的解释问题的另一个问题。 – 2012-02-29 09:37:32

+0

说实话,我已经做到了:http://stackoverflow.com/questions/9312021/junitcore-stopping没有结果。这也将有助于如果我知道如何将RunListener添加到自定义的Runner? – ctekk 2012-02-29 09:39:26