Junit Powermock:首先创建所有测试实例时不支持通知
当我尝试执行下面的简化JUnit测试时,它成功了,但我收到一条错误消息:首先创建所有测试实例时,不支持通知强>Junit Powermock:首先创建所有测试实例时不支持通知,junit,junit4,powermock,powermockito,junit-runner,Junit,Junit4,Powermock,Powermockito,Junit Runner,当我尝试执行下面的简化JUnit测试时,它成功了,但我收到一条错误消息:首先创建所有测试实例时,不支持通知 @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(BlockJUnit4ClassRunner.class) @PrepareForTest({ A.class }) public class TestA extends TestB { @Test public void test() throws Excep
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(BlockJUnit4ClassRunner.class)
@PrepareForTest({ A.class })
public class TestA extends TestB {
@Test
public void test() throws Exception {
assertEquals(true, true);
}
}
public class TestB {}
public class A {}
当我删除@powermockrunnerregate(BlockJUnit4ClassRunner.class)
或扩展TestB
或@PrepareForTest({A.class})
时,消息消失。即使是emtpy@PrepareForTest({})
也会显示错误消息
我发现了这个问题,但它不是同一个问题,因为我没有使用扩展的BlockJUnit4ClassRunner
我正在试图理解出现此错误消息的原因。我正在使用最新版本的Powermock(1.6.6)和JUnit 4.12,并使用java8运行测试。Powermock扩展JUnit事件消息,并在测试生命周期中触发一些附加事件
PowerMockTestListener
可用于侦听所有jUnit和其他PowerMock事件
其中一个事件要求为每个测试创建一个实例。jUnit运行程序通常为类中的每个测试方法创建一个新的测试类实例,但其中一些方法只能为所有测试创建一个类实例。当使用@powermockrunnerregate
时,委托运行者负责创建测试实例
如果在没有“test created”的情况下触发事件“test start”,则PowerMock检测到所有测试实例都是在测试启动之前创建的,并且无法触发其内部事件,此消息将打印到system.err。所以,你们的问题和文章中描述的一样
PowerMock目前只有一个实现PowerMockTestListener
——AnnotationEnabler。此实现用于与EasyMock和Mockito集成,并支持注释,如@TestSubject
,@Mock
等。结果,您会在控制台中看到这条消息,这意味着这些功能无法正常工作。但对于Mockito的情况,使用MockitoAnnotations.initMocks(this)
更容易修复
非常有趣的是,如果删除“extenstedtestb”,消息就会消失。我会检查这个案子,调查为什么会发生