私はそれに静的メソッドを持つメソッドでMockitoを使用しようとしています。私はPowerMockを使うことができないので、非静的メソッドでメソッドをラップしたのです。Mockitoを静的メソッドで正しく使用するにはどうすればいいですか?
public class WrapperUtil {
public String getURLContent(String path) throws IOException{
URL url = new URL(path);
return IOUtils.toString(url);
}
}
私はWrapperUtilクラスを2つの異なる方法でテストしました。 1つのテストは機能しましたが、WrapperUtilクラスのカバレッジは提供されませんでした。もう1つは静的メソッドに関連するnullポインタ例外をスローしています。
これは動作するものの、どのようなカバレッジも提供していません。
@RunWith(MockitoJUnitRunner.class)
public class WrapperUtilTest {
@InjectMocks
WrapperUtil ioutils;
@Before
public void setUp() throws Exception {
ioutils = new WrapperUtil();
}
@Test
public void testGetUrlContent() throws IOException {
WrapperUtil ioutilsSpy = Mockito.spy(ioutils);
Mockito.doReturn("test").when(ioutilsSpy).getURLContent(Mockito.anyString());
assertTrue(ioutils2.getURLContent("test").contains("test"));
}
}
これは動作しないものである:
@RunWith(MockitoJUnitRunner.class)
public class WrapperUtilTest {
@InjectMocks
WrapperUtil ioutils;
@Before
public void setUp() throws Exception {
ioutils = new WrapperUtil();
}
@Test
public void testGetUrlContent() throws IOException {
WrapperUtil ioutilsSpy = Mockito.spy(ioutils);
Mockito.when(ioutilsSpy).getURLContent(Mockito.anyString()).thenReturn("test");
assertTrue(ioutils2.getURLContent("test").contains("test"));
}
}
は、どのように私はこの作業を行うと、PowerMockitoを使用せずに、コードカバレッジを達成することができますか?手伝ってくれてどうもありがとう。ここ
関連しない:コード例に誤字があります。 'ioutils'を宣言しますが、' ioutils2'を使います。 – GhostCat
それほど不明瞭なものではありません。私は特にあなたの態度が高品質を達成するのが好きです(私の答えはここでは別の方向に向いていますが)**そして**あなたがPowerMockを避けたいと理解しています。私はあなたのためにこれをさらに3回upvoteすることができればいいと思う! – GhostCat
最後に、Apache IOUtils.toString()を使用していると仮定します。このメソッドは*推奨されていない*ので、代わりにエンコーディングを使用する必要があります。 – GhostCat