我有一个类需要进行测试。在可能的情况下,我会对这个依赖其他类对象的类进行依赖注入。但是,有时候我想模拟对象,而不重构代码或应用 DI。
以下是被测试的类:
public class Dealer {
public int show(CarListClass car){
Print print=new Print();
List<String> list=new LinkedList<String>();
list=car.getList();
System.out.println("Size of car list :"+list.size());
int printedLines=car.printDelegate(print);
System.out.println("Num of lines printed"+printedLines);
return num;
}
}
我的测试类如下:
public class Tester {
Dealer dealer;
CarListClass car=mock(CarListClass.class);
List<String> carTest;
Print print=mock(Print.class);
@Before
public void setUp() throws Exception {
dealer=new Dealer();
carTest=new LinkedList<String>();
carTest.add("FORD-Mustang");
when(car.getList()).thenReturn(carTest);
when(car.printDelegate(print)).thenReturn(9);
}
@Test
public void test() {
int no=dealer.show(car);
assertEquals(2,number);//not worried about assert as of now
}
}
我无法想出一种解决方案来模拟Dealer类中的打印对象。因为我是在测试类中进行模拟,但它是在被测试的方法中创建的。我做了研究,但没有找到任何好的资源。
我知道将Print对象的创建移出该方法并注入该对象是更好的方式,但我想按照现有代码测试,即在方法内部创建打印对象。是否有任何方法可以实现这一点?