ゲッター/セッターを使用してプライベート変数を操作することの何が問題になっていますか?setUp()
テストクラスで/メソッドを使用@Before
して、テストする状態を設定できます。例えば:
public class MyClass {
private int myInt;
public void setMyInt( int i ) { this.myInt = i; }
public int getMyInt() { return this.myInt; }
public void addsTo( int add ) { return myInt + add; }
...
}
public class TestMyClass {
MyClass my = new MyClass();
@Before public void setup() { my.setMyInt( 42 ); }
@Test public void testIs42() { assertEqual( "MyInt is 42" , my.getMyInt() , 42 ); }
@Test public void testAddsTo() { assertEqual( "addsTo() works" , my.addsTo( 10 ) , 52 ); }
}
意味がありますか?この方法では、パブリックメソッドを介してのみプライベート変数を操作します。このaddsTo()
例は、ゲッター/セッターではなく、クラスが公開するパブリックメソッドを通常テストすることを示すためのものです。
同様に、クラスメソッドのテストを可能にするために、メソッドの可視性をプライベートから保護に変更することがよくあります。
乾杯、