如何为以下代码编写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()); } }
答案 0 :(得分:0)
因此,您需要执行以下某个选项,将模拟注入字段name
和userdao
。
不要直接在代码中调用构造函数,而是通过setter使用字段注入。这将允许您的测试提供两个类的模拟实例。
为这两个字段提供默认范围设置方法。这些方法仅用于测试目的。
使用Refection将字段设置为模拟实例。一个简单的方法是使用Spring的ReflectionTestUtils。
一旦其中一个到位,您就可以提供模拟实例(可能使用Mockito)来驱动您想要测试的行为。我建议选项1是最好的,如果是可行的,那么选项3.但是,选项3的缺点是测试依赖于私有字段的名称。