我正在为Mockito设置项目的jUnit测试。调用System Under Test(DrawingService)中的方法时遇到问题。 Mocks包含一个Drawing和一个IDrawingRepository。在Mockito测试中调用方法时出现NullPointerException
我是TDD,单元测试和一般嘲笑的新手,所以也许我做了一些noob错误?任何帮助将不胜感激。
下面是测试类:
public class DrawingServiceTest {
private DrawingService drawingService;
private Drawing drawing;
private IDrawingRepository repository;
private String drawingName;
@Before // Executed before each @Test
public void setUp(){
drawingService = new DrawingService();
drawing = mock(Drawing.class);
repository = mock(IDrawingRepository.class);
}
@After // Executed after each @Test
public void tearDown(){
//clean up code
}
@Test
public void getDrawingTest() throws DrawingNotFoundException{
drawingName = "A drawing name that exists";
System.out.println("drawing name is: " + drawingName);
when(repository.findByName(drawingName)).thenReturn(drawing);
System.out.println("calling DrawingService.getDrawing(" + drawingName +")");
drawingService.getDrawing(drawingName); // The test doesn't continue past this line
System.out.println("verifying repository.findByName(" + drawingName +") is called");
verify(repository).findByName(drawingName);
}
这里的被测系统:
@Service ("iDrawingService")
public class DrawingService implements IDrawingService {
@Autowired
private IDrawingRepository repository;
public List<Drawing> getDrawings() {
return (List<Drawing>) repository.findAll();
}
public Drawing getDrawing(String strName) throws DrawingNotFoundException{
Drawing drawing = repository.findByName(strName); //this line throws the NullPointerException
if(drawing == null){
throw new DrawingNotFoundException("No drawing found for name " + strName);
}
return drawing;
}
}
感谢您的支持!非常感激。 –