我有一个程序,我已经编写了以下集成测试(真正的测试要复杂得多,但这些是重要的部分):
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
@ContextConfiguration(classes=SpringApplication.class)
@Transactional
public class ReportServiceIntegrationTest {
@Autowired
private ReportService4 reportService;
@Test
public void testHappyPath() {
String url = "https://www.someRealUrl.com";
Document doc = Parser.parseUrl(url);
Report report = reportService.generateReport(doc);
assertNotNull(report.getAllRecommendations());
assertNotNull(report.getId());
//...
}
}
集成测试工作正常,但正如您所看到的,它依赖于外部依赖关系做一个真正的网站才能工作。这有一些明显的缺点(当你离线时无法测试等等。)。
所以我要做的只是模拟Parser.parseUrl()方法,以便始终从脱机源返回Document而不是调用真实URL。
我查看了使用PowerMockito并使用@RunWith(PowerMockRunner.class)
运行测试,但这迫使我模拟整个报表服务及其背后的存储库,而我真正想做的就是消除对外部源的依赖
任何人都可以帮我吗?提前谢谢!