Tre*_*vor 6 java junit mocking powermock
我正在尝试编写一个单元测试,需要确认是否调用了一个方法.我正在使用JUnit,Mockito和PowerMock.
public class Invoice
{
protected void createInvoice()
{
// random stuff here
markInvoiceAsBilled("57");
}
protected void markInvoiceAsBilled(String code)
{
// marked as billed
}
}
所以,这里我的系统正在测试中Invoice.我正在运行这个测试:
public class InvoiceTest
{
@Test
public void testInvoiceMarkedAsBilled()
{
Invoice sut = new Invoice();
Invoice sutSpy = spy(sut);
sut.createInvoice();
// I want to verify that markInvoiceAsBilled() was called
}
}
这个例子只是一个实际代码看起来像的例子....
我的问题是mockito说你只能验证是否在模拟对象上调用了一个方法......但是我不想模拟这个对象,因为它是我测试的对象.我知道你可以监视你正在测试的对象,所以这就是我试过的:
verify(sutSpy).markInvoiceAsBilled("57");
我想做的不可能吗?或者我只是以错误的方式去做?
感谢大家 :)
我不确定你试图做的是最好的办法.
我不会关心自己Invoice.createInvoice()调用一个内部的私有方法markInvoiceAsBilled()- 而是测试调用createInvoice()以你期望的方式改变Invoice对象的状态 - 即,status现在BILLED或类似的东西.
换句话说 - 不要测试调用哪些方法createInvoice()- 测试在调用此方法之后,对象的状态就是您所期望的.
| 归档时间: |
|
| 查看次数: |
3688 次 |
| 最近记录: |