読んだ後: https://code.google.com/p/powermock/wiki/BypassEncapsulation 気づいたのですが、わかりません。
この例を見てください:
public class Bar{
private Foo foo;
public void initFoo(){
foo = new Foo();
}
}
PowerMockを使用してプライベートメンバーfoo
にアクセスするにはどうすればよいですか(たとえば、foo
がnullでないことを確認するには)?
注:
不要なのは、追加のget
methodsを使用してコードを変更することです。
編集:
解決策がリンクされたページのサンプルコードブロックを見逃していることに気付きました。
ソリューション:
Whitebox.getInternalState(bar, "foo");
これは、次のテストクラスを書くのと同じくらい簡単なはずです。
public class BarTest {
@Test
public void testFooIsInitializedProperly() throws Exception {
// Arrange
Bar bar = new Bar();
// Act
bar.initFoo();
// Assert
Foo foo = Whitebox.getInternalState(bar, "foo");
assertThat(foo, is(notNull(Foo.class)));
}
}
正しい(静的)インポートの追加は、読者への課題として残されています:)。