公共方法getA()的测试按预期工作,但私有方法getB()的测试不返回模拟值“b”,而是返回与方法getB()的实际返回值相对应的“b”。必须如何调整对getB()的测试,以便返回模拟值“b”?
public class Letters {
public String getA() {
return "A";
}
private String getB() {
return "B";
}
}
class LettersTest {
Letters mockedLetters = mock(Letters.class);
@Test
void getA() {
when(mockedLetters.getA()).thenReturn("a");
assertThat(mockedLetters.getA()).isEqualTo("a"); // True.
// To check if ReflectionTestUtils actually sets the value in mockedLetters.
when(ReflectionTestUtils.invokeMethod(mockedLetters, "getA")).thenReturn("aa");
assertThat(mockedLetters.getA()).isEqualTo("aa"); // True.
}
@Test
void getB() {
when(ReflectionTestUtils.invokeMethod(mockedLetters, "getB")).thenReturn("b");
assertThat((String)ReflectionTestUtils.invokeMethod(mockedLetters, "getB")).isEqualTo("b"); // False; expected: "b", but was: "B".
}
}
你可以做:
但是等待不要做以上任何事情。因为:
我可以为您提供一些参考:
您不应该直接测试私有方法,而应该只测试它们对调用它们的公共方法的影响
有没有任何变通办法来直接测试那些方法而不公开它们?
问题内容: 我有一堂课,负责将合同从CSV导入数据库。 该类本身只有一个开始导入的公共方法,而其他方法都是私有的(因为只有该类本身将使用,并且它们保留逻辑)。 我开始使用Spock对该类进行测试,并且有许多私有方法,该如何测试? 我应该将它们公开进行测试吗?测试仅主要方法,公开一种? 什么是最好的? 问题答案: 从理论上讲,您的私有方法最终会被一种公共方法所使用,否则根本就不会使用它们。因此,通常
我有一个Angular 11项目,我不知道如何测试私有方法。 下面是一个代码示例: 有什么想法吗?
我有一个类,它有一个公共方法,它调用另一个私有方法。 通过调用公共方法 并将 设置为 来进行测试。 将更改为package-private并在测试中直接调用它。 然而,我不确定哪种方法更好。
我使用的是JMockit1.1,我所要做的就是调用一个私有方法并测试返回值。然而,我很难从JMockit去封装示例中准确理解如何做到这一点。
本文向大家介绍PHPUnit测试私有属性和方法功能示例,包括了PHPUnit测试私有属性和方法功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHPUnit测试私有属性和方法功能。分享给大家供大家参考,具体如下: 一、测试类中的私有方法: 上面只是简单的写了一个类包含,一个私有变量和一个私有方法。对于protected和private方法,由于无法像是用public方法一样直接调用