我有一个Java
单元测试:单元测试 - 相对路径导致测试失败?
@Test
public void shouldCreateCorectPerson() throws IOException, ParseException {
//test data
Person expectedPerson = createExpectedObject(PersonsTest.class.getResourceAsStream("/com/my/package/personStub/person1Stub.json"));
//other code and asserts...
}
protected static Person createExpectedPerson(InputStream inputStream) throws IOException {
Gson gson = new Gson();
Person expectedPerson = gson.fromJson(IOUtils.toString(inputStream, StandardCharsets.UTF_8), Person.class);
return expectedPerson;
}
当我运行这个测试在本地它Intelij按预期工作,但是当我在詹金斯运行失败,则是因为我使用相对路径?例如:
/com/my/package/personStub/person1Stub.json
如何确保在jenkins和本地上运行时找到此文件的路径?
构建什么系统? –
json文件的位置在哪里?它与测试文件在同一个软件包中吗? – Mitch
可能使用'ClassLoader.getResourceAsStream'代替:'PersonsTest.class.getClassLoader()。getResourceAsStream(...)'。另外,也许尝试删除传递给'getResourceAsStream'的路径上的前导'/'(尽管我不确定这是否有所作为) –