JMockit:验证是否调用了伪类方法

时间:2018-03-08 11:05:39

标签: java unit-testing jmockit

我目前有以下测试代码:

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");
    }
}

即使我在VerificationsInOrder块中放置了一个失败的组合(即换另一种方法),测试仍然通过。对于Verifications块与假类的使用有什么我不理解的东西吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

看起来你错过了嘲笑依赖项中的一些要点:

你的 realClass 如何了解模拟?

此问题通常由依赖注入解决。这意味着你的 realClass 不会实例化Dependency本身,而是从外部注入它,最好是作为构造函数参数。

答案 1 :(得分:0)

AFAIK,可能不涉及验证方法。 FullVerificationInOrder很糟糕。我个人更喜欢期望块(请参阅此处的工作示例:https://github.com/ko5tik/jsonserializer/blob/master/src/test/de/pribluda/android/jsonmarshaller/JSONMarshallerTest.java

你的测试类如何获取mocjed实例来执行调用?目前,它根本没有使用

我也更喜欢参数的@Mocked注释。

你应该从测试中删除try-catch块 - 这里不需要