感谢您的建议,但这有点太复杂了。
最后,我通过扩展类并覆盖我的设置方法来模拟该方法。这样,默认构造函数将不会调用安装程序的实现,而是会调用覆盖的方法。
这是代码:
// src/author/MyClass.javapublic class MyClass { public MyClass() { setup(); } protected void setup() { throw new Exception("I hate unit testing !"); } public boolean doesItWork() { return true; }}// test/author/MyClass.javapublic class MyClassTest { private class MockedMyClass extends MyClass { @Override protected void setup() { } } private MyClass instance; @Before public void setUp() { // Not to be confusing with `MyClass#setup()`! instance = new MockedMyClass(); } @Test public void test_doesItWork() { assertTrue(instance.doesItWork()); }}
如果您不希望MyTest的安装程序方法被测试以外的其他子类调用或覆盖(因为其他开发人员可能会通过使用安装程序方法将事情弄得很糟),只需将可见性更改为default即可,只有您的类才能呼叫设置。
如果有更简单的方法,请回答问题,因为我对解决方案不是100%满意。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)