java 单例 构造函数_使用powermock在java中抑制一个单例构造函数

我试图对一些使用Singleton类的类进行单元测试,这些类的构造函数执行一些我不能(也不应该)从单元测试环境中做的事情。我的理想场景是完全禁止构造函数,然后将我的测试类调用的其他成员方法截断。我的问题是我似乎无法取消构造函数。

我对解决此问题的方法的理解如下所示:

public class MySingleton extends AbstractSingletonParent {

public final static MySingleton Only = new MySingleton();

private MySingleton(){

super(someVar); // I want the super-class constructor to not be called

//

//more code I want to avoid

}

public Object stubbedMethod() {}

}

public class ClassToBeTested {

public void SomeMethod(){

Object o = MySingleton.Only.stubbedMethod();

}

}

@RunWith(PowerMockRunner.class)

@PrepareForTest(MySingleton.class)

public class TestClass {

@Test

public void SomeTest() {

suppress(constructor(MySingleton.class));

mockStatic(MySingleton.class);

PowerMock.replay(MySingleton.class);

// invoke ClassToBeTested, etc

PowerMock.verify(MySingleton.class);

//make some assertions

}

}不幸的是,在createMock调用期间,MySingleton构造函数被击中,并且仍然调用超级构造函数。

我在做一些愚蠢的事情吗?我在网上发现了一个几乎完全这样的例子,但它使用了不推荐使用的suppressConstructor方法。尽管不赞成我也尝试过,但无济于事......

我正在尝试做什么?如果是这样,我做错了什么?

*编辑版本现在起作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值