单元测试 - 导致测试失败的相对路径?
Unit test - relative path causing test to fail?
我有一个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 中本地测试时它按预期工作,但是当我 运行 在 jenkins 中它失败时,是因为我使用了相对路径吗?例如:
/com/my/package/personStub/person1Stub.json
如何确保在 运行在 jenkins 上和在本地找到此文件的路径?
假设当您 运行 从您的构建系统进行测试时,person1Stub.json
在您的类路径上,执行以下工作:
Person expectedPerson = createExpectedObject(PersonsTest.class.getClassLoader().getResourceAsStream("com/my/package/personStub/person1Stub.json"));
我有一个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 中本地测试时它按预期工作,但是当我 运行 在 jenkins 中它失败时,是因为我使用了相对路径吗?例如:
/com/my/package/personStub/person1Stub.json
如何确保在 运行在 jenkins 上和在本地找到此文件的路径?
假设当您 运行 从您的构建系统进行测试时,person1Stub.json
在您的类路径上,执行以下工作:
Person expectedPerson = createExpectedObject(PersonsTest.class.getClassLoader().getResourceAsStream("com/my/package/personStub/person1Stub.json"));