如何测试修改模拟成员的函数?

时间:2019-02-04 17:11:41

标签: java unit-testing testing junit mocking

我对Mockito有问题。我有两个不同的班级。我的目的是测试“ setChanges”功能。这是我的第一堂课:

class M {
private String a;
private String b;
private boolean c = false;

public String getA() {
    return a;
} 
public void setA( String _a ) {
     a = _a;
} 
public String getC() {
    return c;
} 
public void setC( final boolean imp ) {
     c = imp;
} 

}

这是具有“ setChanges”功能的主类:

class MyMainClass {
private String getMyA() {
    return "Data";
}

private static void setChanges(final M m) {
    if (getMyA().equals(m.getA())){
        m.setC(true);
    }
}

}

如何测试“ setChanges”?这意味着如果getA()返回“数据”,如何检查应为“ true”的getC()?

2 个答案:

答案 0 :(得分:0)

谢谢,它与以下代码兼容:

@Test

public void testsetChanges(){

MyMainClass  mmc  = new MyMainClass ();
M m = new M();
m.setA("Data");

Method method = MyMainClass.class.getDeclaredMethod(
            "setChanges",
            M.class
    );
    method.setAccessible(true);
    method.invoke(method, m );

assertTrue(m.getC());

}

答案 1 :(得分:-1)

传入M满足(或不满足)getMyA的实例,并验证M#getC返回true(或false,具体取决于关于您正在测试的内容)。无需模拟。