PowerMock @SuppressStaticInitializationFor不适用于测试类中的嵌套类



我对代码库中广泛使用的基类进行了更改,并添加了一个静态初始化块。我现在正在进行我们的所有单元测试,试图通过添加

来使它们起作用
@SuppressStaticInitializationFor("com.mycompany.WidelyUsedBaseClass")

在某些情况下,这可以使用,但是我无法与具有扩展WidelyUsedBaseClass的内部类的测试类一起使用。(不要问我为什么存在这些嵌套的班级;我不确定为什么标准模拟不够。使用这些内部类。)

这是我的意思的一个示例:

@RunWith(PowerMockRunner.class)
@SuppressStaticInitializationFor("com.mycompany.WidelyUsedBaseClass") // <-- This isn't working! I can still see <clinit> in the exception when the test fails...
public class SomeTestsFromAnotherTeam
{
    // test logic...
    // more test logic...
    Stub myStub = new Stub();
    // more test logic...
    private class Stub extends WidelyUsedBaseClass
    {
        // some other logic...
    }
}

我认为问题是在new Stub()调用中发生的。

好吧,我无法确切弄清楚发生了什么,但是我确实找到了解决问题的方法。

测试在封闭类外部移动内部类后通过。我只是在同一文件中的SomeTestsFromAnotherTeam类之后将其放在私有包装中:

public class SomeTestsFromAnotherTeam
{
    // ...
}
class Stub extends WidelyUsedBaseClass
{
    // ...
}

相关内容

  • 没有找到相关文章

最新更新