Java JMockit:验证是否调用了假类方法
我目前有以下测试代码:Java JMockit:验证是否调用了假类方法,java,unit-testing,jmockit,Java,Unit Testing,Jmockit,我目前有以下测试代码: public class FakeClass extends MockUp<RealClass> { @Mock public void doSomething() { ... } } void testHandleMetrics() { FakeClass fakeClass = new FakeClass(); try { RealClassUser realClassUser =
public class FakeClass extends MockUp<RealClass>
{
@Mock
public void doSomething() {
...
}
}
void testHandleMetrics() {
FakeClass fakeClass = new FakeClass();
try {
RealClassUser realClassUser = new RealClassUser();
realClassUser.useDoSomethingMethod(); //This calls doSomething
new VerificationInOrder() {
{
fakeClass.doSomething();
}
};
} catch (Exception e) {
fail("FAILED");
}
}
公共类FakeClass扩展了实体模型
{
@嘲弄
公共无效剂量测定法(){
...
}
}
void testHandleMetrics(){
FakeClass FakeClass=新的FakeClass();
试一试{
RealClassUser RealClassUser=新的RealClassUser();
realClassUser.useDoSomethingMethod();//这将调用doSomething
新的VerificationNorder(){
{
伪类。doSomething();
}
};
}捕获(例外e){
失败(“失败”);
}
}
即使我在VerificationsInOrder块中放入一个失败的组合(即放入另一个方法),测试仍然通过。关于使用假类的验证块,有什么我不理解的吗
谢谢大家! 在模拟依赖项时,您似乎遗漏了一些要点: 您的realClass如何知道mock
这个问题通常通过依赖注入来解决。这意味着您的realClass不会实例化依赖项本身,而是从外部将其注入,最好是作为构造函数参数。AFAIK,验证中的方法可能不涉及。完全验证诺德是斯特里克特先生。我个人更喜欢期望块(参见此处的工作示例:) 您的测试类如何让mocjed实例在其中执行调用?目前,它根本没有被使用 我也更喜欢参数上的@Mocked注释
您应该从测试中删除try-catch块-这里没有必要您不应该像这样混合伪造和模拟API。。。花点时间读一下(很短的)那一页,它会把事情弄清楚的。