java-有什么方法可以模拟pojo,然后在嘲笑中手动设置值?

考虑一个方法在我的服务中返回A类,

public List<A> method(){
A a=B.method_b();
List<A> list=new ArrayList<>();
for(A aa:a){
A classA=new A();
classA.setVal1(aa.getVal1());
list.add(classA);
}
        return list;
    }

我的pojo课

class A{
private int val1;
private int val2;
.
.
.
.
private int val10;
//setter and getter 
}

所以在测试用例中,我写为

@Mock
B b;
@Test
public void check(){
 Mockito.when(b.method_b())
        .thenReturn(return_A());
}
private A return_A(){
A a=new A();
a.setVal1(1);
.
.
.
a.setVal10(10);
}

在这里一切正常,代码覆盖范围也很好.但是我的问题是,是否有任何可能的方法来避免通过使用Mockito返回A类的私有方法?

解决方法:

在单元测试中,您可以根据输入定义类的行为.
这意味着您必须指定此输入.没有其他办法了.

有不同的方法可以做到这一点.

一种配置DTO的方法.

另一种方法是生成输入数据.但这有一些缺点:
 -您仍然需要一个方法(或类)来做到这一点,
 -它使您的考试难以阅读和理解,
 -它会在您的测试中引入失败可能性,从而降低可靠性,

另一种方法是仅在测试方法的// arrange部分中设置当前测试所需的那些值:

@Mock
B b;
@Test
public void check(){
  // arrange
  Mockito.when(b.method_b())
        .thenReturn(return_A());
  A a=new A();
  // values to be used by cut in this test
  a.setVal1(1);
  a.setVal3(3); 

  // act
  // assert 
}
上一篇:java-如何对带有@InjectMocks注释的类的方法存根?


下一篇:android-模拟改造可观察到的错误