HOWTO · Java
Java でプライベート メソッドをテストする
このチュートリアルでは、Java でプライベート メソッドをテストする方法について説明します。
テスターとして作業している場合は、指定されたコードに対して多くのテスト操作を実行できます。 ただし、private メソッド を含むクラスがある場合、テスト操作を実行できない場合があります。
private メソッドは、外部からアクセスできないメソッドです。つまり、外部から呼び出すことはできません。 クラスの内部要素でのみ使用できます。
内部呼び出しにのみ応答しますが、private メソッドをすばやくテストできるアイデアがあります。 この記事では、private メソッドをテストする方法を示します。
Java で private メソッドをテストする
テストする必要がある以下のようなクラスがあるとします。
class MyClass {
private int Sum(int a, int b) { // method is private
return a + b;
}
}
ご覧のとおり、上記のコードには Sum() という名前の private メソッドがあります。 Test という別のクラスでメソッドをテストしようとするとどうなるか見てみましょう。
public class Test {
public static void main(String[] args) {
// Created an object for the class "MyClass"
MyClass mc = new MyClass();
// Error: Called the private method externally
System.out.println("The result is: " + mc.Sum(4, 5));
}
}
以下のエラーが返されます。
error: Sum(int,int) has private access in MyClass
Sum() は MyClass クラスの private メソッドであるため、外部からアクセスすることはできません。 したがって、これをチェックする唯一の方法は、メソッド Sum() を呼び出すクラス MyClass 内に public メソッドを含めることです。
public メソッドは次のようになります。
public int NewSum(int a, int b) {
// A public method that can call the private method internally.
return Sum(a, b);
}
上記のメソッドは、クラス MyClass 内にあるため、Sum() メソッドを呼び出します。 クラスMyClassのフルバージョンは次のようになります。
class MyClass {
private int Sum(int a, int b) { // Private method
return a + b;
}
public int NewSum(int a, int b) { // Public method
return Sum(a, b);
}
}
MyClass を更新した後、private メソッド Sum() をテストできるようになりました。 ただし、MyClass のオブジェクトから public メソッド NewSum() を呼び出す必要があります。
これで、更新されたテスト クラスは次のようになります。
class Test {
public static void main(String[] args) {
// Created an object for the class "MyClass"
MyClass mc = new MyClass();
// Called the public method "NewSum()"
System.out.println("The result is: " + mc.NewSum(4, 5));
}
}
上記のコード フェンスでは、オブジェクト MyClass クラスからクラス NewSum() を呼び出していることがわかります。 メソッド Sum() にエラーやバグがない場合、以下の出力が表示されます。
The result is: 9
上記では、private メソッドをテストし、それが正常に機能するかどうかを確認する最も基本的な方法を共有しました。