tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:@isTest(SeeAllData=true)について

@isTest(SeeAllData=true)をテストメソッド毎に指定できることに、今日気が付きました。


API24.0以降はテストクラスでは既存データにアクセスできないようになっています。
どうしてもデータにアクセスする必要がある場合は「@isTest(SeeAllData=true)」を宣言することでアクセスすることが可能になります。


宣言方法はこのような感じです。

@isTest(SeeAllData=true)
private class TestDataAccessClass {

    static testmethod void myTestMethod1() {
        /* テスト処理 */
    }
}


これによりテストクラス内で既存データにアクセスすることが可能になります。
この@isTestはクラスに対して宣言するものでテストメソッド毎に宣言することはできないと思っていたのですが、ちゃんと指定することができました。


このように指定することができます。

@isTest
private class TestDataAccessClass {

    @isTest(SeeAllData=true)
    static void myTestMethod1() {
        /* テスト処理 */
    }
}


これでテストクラス全体でなく、テストメソッド毎にアクセスの許可を指定できます。
Developer's Guideなどにちゃんと記載がありましたが、全然意識して見てませんでした。

参考サイト

IsTest Annotation

http://goo.gl/qb6o5