我有一个Spring应用程序,可从API获取数据。我们对Jenkins进行了测试,问题是Jenkins无法访问此API。
因此,我们的解决方案是将带有这些API端点的一些示例文件嵌入到src/test/resources
中。
但是代码变得一团糟,因为我不知道在测试还是运行中如何区别。
例如:
private void loadDataFromEndpointOne(boolean isTest) {
List<String> someData = new ArrayList<>();
if (isTest) {
ClassLoader loader = this.getClass().getClassLoader();
String file = loader.getResource("endpointOne.txt");
...
someData = someMethodReadingResourceFile();
}
else {
someData = someMethodReadingFromAPI();
}
}
因此,从JUnit @Test
开始,我将isTest
设置为true,从运行时设置为false。
这对我来说听起来并不优雅。
有聪明的方法吗?
答案 0 :(得分:0)
如果您正在编写JUnit测试,最好使用Mockito或PowerMockito(或与此有关的任何其他库)来模拟API调用。多数民众赞成在更清洁的方式进行JUnit测试。 例如,如果您有:
private void loadDataFromEndpointOne() {
someData = someMethodReadingFromAPI();
}
从您的测试课程中像这样模拟它:
Mockito.when(mockedClass.loadDataFromEndpointOne()).thenReturn(someDummyDataForTest);
有关更多信息,请参阅Mockito的文档。