java - 使用 Mockito 检查单元测试中传递的参数

标签 java testing junit mockito

我正在尝试使用 Mockito 编写非常简单的测试。我写了一小段代码:

public class FlowTests {

    @Mock
    Calculator mockCalc = Mockito.mock(Calculator.class);
    ConsoleView mockView = Mockito.mock(ConsoleView.class);

    @Test
    public void a01_Test() {

        final String s = "2+2*2";

        Controller c = new Controller();
        c.setCalc(mockCalc);
        Mockito.when(mockView.getFormule()).thenReturn(s); // I am not sure if it works
        c.setView(mockView);
        c.handle();
        // TODO check if evaluate method has been invoked with "2+2*2"
    }
}

在这里您可以看到与此测试关联的类:

public class Controller {

    private IView view = new ConsoleView();
    private ICalculator calc = new Calculator();
    Double value = null;

    public void handle() {

        String formule = view.getFormule();
        Double value = calc.evaluate(formule);

        if (value != null) {
            System.out.println("Result: ");
            view.appendAnswer(value);
        }
    }

    public void setCalc(ICalculator calc) {
        this.calc = calc;
    }

    public void setView(IView view) {
        this.view = view;
    }
}


public class Calculator implements ICalculator {

    public double evaluate(String s) {

        ...

        char[] formuleChar = s.toCharArray();
        result = calc.eval(formuleChar);

        return result;
    }

}

public class ConsoleView implements IView {

    public String getFormule() {
        ... // getting s from console
        return s;
    }

    public void appendAnswer(double r) {
        System.out.println(r);
    }
}

我测试的第一个目标是在 ConsoleView 中模拟函数 getFormule() 以始终返回 String s = "2+2*2"。我做到了,但我不确定它是否有效。

主要目标是检查计算器类中的方法 evaluate() 是否已使用相同的字符串调用。我不知道该怎么做。

我无法修改我的代码。我只能写一个测试。

预先感谢您的帮助!

最佳答案

尝试这样的事情:

// check if evaluate method has been invoked with "2+2*2"
verify(mockCalc).evaluate("2+2*2");

关于java - 使用 Mockito 检查单元测试中传递的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20797725/

相关文章:

java - 将项目移动到 GIT 后,Eclipse java 构建速度变慢

java - JSF 传递 Bean 来查看失败

python - 是否可以使用 squish 对 QML 进行自动化测试?

java - Java 如何为方法生成签名?

java - doThrow 异常不抛出 Spring MVC 单元测试?

java - 从子类外部访问父类的 protected 方法(使用反射或任何可行的方法)

java - 我怎样才能在 Android Studio 中输出 "comment"整个类

java - 如何验证表中某列是否存在

testing - 方案平方和检验

javascript - Protractor :如何单击据说不可见的链接