0

我在java中面临一个关于类模拟的问题。

我将使用虚拟类解释问题(以避免与项目相关的安全问题)我们有一个类 Employee

public class Employee {
public int netSalary() {
    int sal = totalSal() - 100;
    return sal;
}

public int totalSal() {
    // code to return value which is making db calls or remote calls
}

}

现在我的问题是如何在不调用 totalSal 方法的情况下测试 netSalary 方法我已经尝试过 expect().andReturn() 以及 suppress(method());

但两者都不起作用

4

2 回答 2

1

如果这是通过 MVC 完成的,那么您的员工类应该有一个可以访问数据库的 DAO。注入 DAO 的模拟版本,该版本在totalSalary.

每条评论:

这是基于您上面的代码:

public class MyTest{

    private class TestableEmployee extends Employee{

        public int totalSal(){
           return 55;
        }
    }

    @Test
    public void testIt(){
       Employee employee = new TestableEmployee();

       int netValue = employee.netSalary();

       assertEquals(netValue, 55-100);
    } 
}
于 2012-09-14T11:29:27.763 回答
0

您可以使用Mockito。模拟方法:

when(employee.totalSal()).thenReturn(1000);
于 2012-09-14T09:56:46.067 回答