gpt4 book ai didi

java - 同时使用 junit 断言和 mockito 验证

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:44:34 25 4
gpt4 key购买 nike

我将 Junit 与 Mockito 结合使用。我使用mockito的verify方法+junit assertion来做完整的验证。这是不可取的吗?我们应该使用其中之一,而不是同时使用两者吗?

最佳答案

两者并用没有错。

Mockito 的 verify 用于断言在给定的 mock 上调用了一个方法(使用预期的参数)。

JUnit 的assertXYZ 用于断言某些结果具有预期值。

两者都是有效的验证,如果两者相关,则两者都应该使用。

例如,考虑以下(不可否认是人为的)情况:

你有一个执行一些数学计算的接口(interface):

public interface ValueProducer {
public int getValue(int val);
}

还有一个将它产生的任何结果加倍的类:

public class Doubler {
public static int doubleThatResult (ValueProducer producer, int val) {
return 2 * producer.getValue(val);
}
}

测试它需要断言两件事:

  1. 正确调用了 getValue
  2. 结果翻倍

所以,例如:

public class DoublerTest {

@Test
public void testDoubleThatResult() throws Exception {
int value = 7; // Or any other value
int returnMock = 13; // Or any other value

ValueProducer producerMock = mock(ValueProducer.class);
when(producerMock.getValue(value)).thenReturn(returnMock);

int actual = Doubler.doubleThatResult(producerMock, value);

verify(producerMock);
assertEquals(26, actual);
}
}

关于java - 同时使用 junit 断言和 mockito 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29906784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com