Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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
Junit Powermock:首先创建所有测试实例时不支持通知_Junit_Junit4_Powermock_Powermockito_Junit Runner - Fatal编程技术网

Junit Powermock:首先创建所有测试实例时不支持通知

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

当我尝试执行下面的简化JUnit测试时,它成功了,但我收到一条错误消息:首先创建所有测试实例时,不支持通知

@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”,消息就会消失。我会检查这个案子,调查为什么会发生