0

可能重复:
以下代码的junit测试类

如何为以下代码编写 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());


} }
4

1 回答 1

0

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

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

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

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

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

于 2012-09-05T11:13:00.440 回答