TestVisible アノテーション
TestVisible アノテーションを使用すると、テストクラス外にある別のクラスの非公開メンバーまたは保護メンバーにテストメソッドからアクセスできるようになります。これらのメンバーには、メソッド、メンバー変数、内部クラスが含まれます。このアノテーションは、テストを実行する目的でのみ、権限の高いアクセスレベルを有効にします。このアノテーションによって、非テストクラスからアクセスするメンバーの表示が変わることはありません。
このアノテーションでは、メソッドのアクセス修飾子やメンバー変数にテストメソッドでアクセスする場合に、それらを public に変更する必要はありません。たとえば、外部クラスに対して非公開メンバー変数を表示せずに、テストメソッドからアクセスできるようにする場合は、TestVisible アノテーションを変数定義に追加します。
この例では、非公開クラスメンバー変数と非公開メソッドに TestVisible アノテーションを付加する方法を示します。
1swfobject.registerObject("clippy.codeblock-0", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class TestVisibleExample {
18 // Private member variable
19 @TestVisible private static Integer recordNumber = 1;
20
21 // Private method
22 @TestVisible private static void updateRecord(String name) {
23 // Do something
24 }
25} 上記のクラスを使用するテストクラスを次に示します。アノテーションが付加されたメンバー変数とメソッドにアクセスするテストメソッドが含まれています。
1swfobject.registerObject("clippy.codeblock-1", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17@isTest
18private class TestVisibleExampleTest {
19 @isTest static void test1() {
20 // Access private variable annotated with TestVisible
21 Integer i = TestVisibleExample.recordNumber;
22 System.assertEquals(1, i);
23
24 // Access private method annotated with TestVisible
25 TestVisibleExample.updateRecord('RecordName');
26 // Perform some verification
27 }
28}