私は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
ゲンキンズとローカルで実行しているときにこのファイルのパスが見つかるようにするにはどうすればよいですか?
何ビルドシステムあなたは、Gradleの、Mavenのか、何か他のものを使用しているの? –
jsonファイルの場所はどこですか?テストファイルと同じパッケージに入っていますか? – Mitch
代わりに 'ClassLoader.getResourceAsStream'を' PersonsTest.class.getClassLoader()。getResourceAsStream(...) 'の代わりに使用してください。また、getResourceAsStreamに渡すパスの先頭にある '/'を削除してみてください(私は違いがあるとは確信していません)。 –