用于在方法中调用另一个类的对象的代码

时间:2012-09-05 10:41:10

标签: junit

  

可能重复:
  junit test class for the following code

如何为以下代码编写junit测试类

  

包装样品;

     

公共课Fortest {

UserDao userdao = new UserDao();
Phone name = new Phone();
public String handleUser(User user) {

    String returncode="failed"; //        User usr = new User("bob");
    String username=user.getUsername();
    String pass=user.getPass();
    System.out.println("username and password : "+username+" : "+pass);


    String ph = name.getA();
    System.out.println("ph "+ph);

    if(ph.equalsIgnoreCase("test")){
        System.out.println("A "+ph);
        returncode="done";
    }
    System.out.println("returning "+returncode);

    return  returncode; //        System.out.println("name "+name.toString()); //        System.out.println(name.getA());


} }

1 个答案:

答案 0 :(得分:0)

因此,您需要执行以下某个选项,将模拟注入字段nameuserdao

  1. 不要直接在代码中调用构造函数,而是通过setter使用字段注入。这将允许您的测试提供两个类的模拟实例。

  2. 为这两个字段提供默认范围设置方法。这些方法仅用于测试目的。

  3. 使用Refection将字段设置为模拟实例。一个简单的方法是使用Spring的ReflectionTestUtils。

  4. 一旦其中一个到位,您就可以提供模拟实例(可能使用Mockito)来驱动您想要测试的行为。我建议选项1是最好的,如果是可行的,那么选项3.但是,选项3的缺点是测试依赖于私有字段的名称。