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。。。花点时间读一下(很短的)那一页,它会把事情弄清楚的。