ない私たちは現在の実装でIOException
をシミュレートしていますが、このようなものでコードをリファクタリング場合はどのように確認してください:
public void loadProperties(String path) throws IOException {
InputStream in = this.getClass().getResourceAsStream(path);
loadProperties(in);
}
public void loadProperties(InputStream in) throws IOException {
Properties properties = new Properties();
properties.load(in);
this.foo = properties.getProperty("foo");
this.foo1 = properties.getProperty("foo1");
}
と嘲笑InputStreamを作成し、このような何か:
package org.uniknow.test;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
public class TestLoadProperties {
@test(expected="IOException.class")
public void testReadProperties() throws IOException {
InputStream in = createMock(InputStream.class);
expect(in.read()).andThrow(IOException.class);
replay(in);
// Instantiate instance in which properties are loaded
x.loadProperties(in);
}
}
警告:コンパイルによって検証することなく、上記のコードを作成し、構文の誤りがある可能性があります。
このメソッドを呼び出す方法のコードを示してください。 [docによると(https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String))、それは 'パス 'は'ヌル 'です。 –
モッキングツールを使用しますか?さもなければ、それは不必要に複雑になるでしょう。 – dambros
はい、私はMockitoを使用する予定です。 voidメソッドのモックを書くのは混乱しています。あなたが私に模擬することができるシナリオを私に提供できるのであれば、本当に役に立ちます。あなたの助けは本当に感謝しています。 – user6090970