JUnitで保護されたメソッドをテストする際に問題はありません。テスト用のパッケージ構造がソースツリー構造を反映している限り、プライベート以外のメソッドもテスト用に表示されます。
もちろん、テストの実装が抽象的である場合は、自分でテストするクラスの通常のサブクラスを作成する必要があります(目的に合っていれば、いくつかの模擬ライブラリで行う必要があります)。このような場合でも、保護された可視性メソッドを呼び出すためのパブリックメソッドのレイヤーを作成する必要はありません。プライベートメソッドの場合にのみ、この戦略は機能しません。しかし、しばしばプライベートメソッドをテストする必要がありますとにかくデザインの問題の兆候です。
例: src/mypackage/AbstractClass.javaにあるテスト対象クラス パッケージmypackage;テスト/ mypackageと/ AbstractClassTest.java
package mypackage;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
public class AbstractClassTest {
@Test
public void returnsOneReturnsOne() {
AbstractClass instanceToTest = new AbstractClassTestable();
assertEquals(1, instanceToTest.returnsOne());
}
}
/** This is needed, because we cannot construct abstract class directly */
class AbstractClassTestable extends AbstractClass {
}
テストで使用されていないスタブのリストが増えていることを除いて問題はありません。 –