0

オポチュニティとオポチュニティに関連付けられたすべてのレコードを生成する必要があるテスト メソッドを作成しようとしています。最も奇妙な場所でヌルポインター例外が発生し続けます。

public static void createOpp() {
    OpportunityEscalationtest.a = new Account(Name = 'SGC Test Account'
                                            , Type = 'Customer'
                                            , Phone = '(00) 0000 0000');

    insert OpportunityEscalationtest.a;

    OpportunityEscalationtest.c = new List<Contact>();      
    Contact newC = new Contact( FirstName = 'Jack'
                                , LastName = 'O\'Neil'
                                , Phone = '(00) 0000 0000'
                                , AccountId = OpportunityEscalationtest.a.Id);

    OpportunityEscalationtest.c.add(newC);

    newC = new Contact( FirstName = 'Samantha'
                        , LastName = 'Carter'
                        , Phone = '(00) 0000 0000'
                        , AccountId = OpportunityEscalationtest.a.Id);

    OpportunityEscalationtest.c.add(newC);

    newC = new Contact( FirstName = 'Daniel'
                        , LastName = 'Jackson'
                        , Phone = '(00) 0000 0000'
                        , AccountId = OpportunityEscalationtest.a.Id);

    OpportunityEscalationtest.c.add(newC);

    insert OpportunityEscalationtest.c;

    Contact priCont = [Select Id from Contact where FirstName = 'Jack' limit 1];
    OpportunityEscalationtest.a.GillForce__Primary_Contact__c = priCont.Id;

    OpportunityEscalationtest.o = new Opportunity( Name = 'Mountain Complex Water'
                                                 , CloseDate = system.today()
                                                 , StageName = 'Business Analysis'
                                                 , AccountId = OpportunityEscalationtest.a.Id);

    insert OpportunityEscalationtest.o;

    for (Contact cont : c) {
        OpportunityContactRole role = new OpportunityContactRole( ContactId = cont.Id
                                                                , OpportunityId = OpportunityEscalationtest.o.Id
                                                                , Role = 'Descision Maker');

        role.IsPrimary = (OpportunityEscalationtest.a.GillForce__Primary_Contact__c == cont.Id);

        insert role;
    }
}

エラーは、次の 2 行のコードの間のどこかにスローされます。

    insert OpportunityEscalationtest.c;

    Contact priCont = [Select Id from Contact where FirstName = 'Jack' limit 1];

私が間違っていない限り、このコードは自己完結型である必要があります。どんなアイデアでも素晴らしいでしょう。

4

2 に答える 2

0

最初に、テスト クラスの API バージョンを 22.0 (クラス本体の [Version Sttings] タブ) に設定し、もう一度テストを実行しようとします。

于 2012-08-28T06:59:21.867 に答える
0

オンラインでエラーが発生しています

Contact priCont = [Select Id from Contact where FirstName = 'Jack' limit 1];

挿入が失敗するという継ぎ目があります(おそらくトリガーのいくつかの条件が原因です)。または、Jack という名前の特定の連絡先が 1 つも挿入されない場合があります (姓が原因である可能性があります)。

私があなただったらどうしますか。すべての連絡先を取得して、デバッグ (または、より簡単な場所) に出力します。この後、どこに問題があるかがわかります。

于 2012-08-28T20:40:49.153 に答える