0

100% カバレッジのテスト クラスを作成しようとしています。標準コントローラーを呼び出し、パラメーター化されたコンストラクターを呼び出して、ページを現在のページとして現在のページに設定する方法を理解するのが困難です。アカウント ビュー ページで、カスタム オブジェクトの関連リストの新しいボタンをオーバーライドしました。レコードを編集するときに同じクラスを使用できます。編集レコード ビュー ページと新しいレコード ビュー ページの両方で、アカウント ID を取得できます。現在、65% のカバレッジを達成できています。何が間違っているのかわかりません。可能であれば助けてください。以下のコードを添付しました。

ありがとうガヤトリ

//my Class

public class NewTaxExempt{

    public TaxExempt__c obj {get; set;}   
    public String selectedIso {get;set;}

    public List<selectOption> isoCodes {

        get {
            List<selectOption> options = new List<selectOption>();

            for (State__c iso : State__c.getAll().values())
            options.add(new SelectOption(iso.State_ISO__c,iso.State_Name__c+' - '+iso.State_ISO__c));

            return options;

        }

        set;
    }

    // onload standard controller will be called.
    public NewTaxExempt(ApexPages.StandardController controller) {

        ID idte=controller.getRecord().id;
        if(idte==null){
            obj=(TaxExempt__c)controller.getRecord();
        }
        else{
            obj= [Select Account__c, Certificate_ID__c, Certificate_Type__c,Description__c, Issuing_Jurisdiction__c,Status__c,Tax_Exempt_Effective_Date__c,Tax_Exempt_Expiration_Date__c from TaxExempt__c where id=:idte];         
        }


    }

    //on click on cancel button
    public PageReference cancel() {
        return new PageReference('/'+obj.account__c);
    } 

    //on click on Save button
    public PageReference save() {

        obj.Issuing_Jurisdiction__c=selectedIso;
        if(obj.id==null){        
            insert obj;
        }
        else{
            update obj;
        }
        return new PageReference('/'+obj.account__c);
    }
}
//my test class

@isTest
public class NewTaxExemptTest{

    public static testMethod void whenIssueJurisdictionIsBlankDefaultValueIsSet(){

        try{    

            BET_ObjectFactory.generateTaxExemptRequirements();
            Account aobj = ( Account)TestFactory.createSObject(new Account(Name='test acc gs250144'),true);
            PageReference ref = Page.NewTaxExempt;
            Test.setCurrentPage(ref);
            TaxExempt__c obj=new TaxExempt__c();
            obj.account__c=aobj.Id;
            obj.Issuing_Jurisdiction__c='RI';
            ApexPages.StandardController sc = new ApexPages.StandardController(obj);
            NewTaxExempt ob=new NewTaxExempt(sc);
            ob.selectedIso='RI'; 
            ob.obj=obj; 

            ob.save(); 

            System.assertEquals(obj.Issuing_Jurisdiction__c,null);


        List<State__c> stList=new List<State__c>();

        State__c st=new State__c();
        st.Name='ST_11009';        
        st.State_Name__c='Alabama';
        st.State_ISO__c='AL';
        st.State_Country_Name__c='United States';
        st.State_Country_ISO__c='US';
        stList.add(st);

        State__c st1=new State__c();
        st1.Name='ST_11008';
        st1.State_Name__c='Alabama';
        st1.State_ISO__c='AL';
        st1.State_Country_Name__c='United States';
        st1.State_Country_ISO__c='US';
        stList.add(st1);

        State__c st2=new State__c();
        st2.Name='ST_11019';        
        st2.State_Name__c='Alaska';
        st2.State_ISO__c='AK';
        st2.State_Country_Name__c='United States';
        st2.State_Country_ISO__c='US';
        stList.add(st2);

        State__c st3=new State__c();
        st3.Name='ST_12009';        
        st3.State_Name__c='Arizona';
        st3.State_ISO__c='AZ';
        st3.State_Country_Name__c='United States';
        st3.State_Country_ISO__c='US';
        stList.add(st3);

        State__c st4=new State__c();
        st4.Name='ST_11309';
        st4.State_Name__c='Arkansas';
        st4.State_ISO__c='AR';
        st4.State_Country_Name__c='United States';
        st4.State_Country_ISO__c='US';
        stList.add(st4);

        State__c st5=new State__c();
        st5.Name='ST_21009';        
        st5.State_Name__c='California';
        st5.State_ISO__c='CA';
        st5.State_Country_Name__c='United States';
        st5.State_Country_ISO__c='US';
        stList.add(st5);

        State__c st6=new State__c();
        st6.Name='ST_23';        
        st6.State_Name__c='California';
        st6.State_ISO__c='';
        st6.State_Country_Name__c='';
        st6.State_Country_ISO__c='';
        stList.add(st6);

        insert stList;

        List<State__c> allStates = [select State_Name__c, State_ISO__c, State_Country_Name__c, State_Country_ISO__c 
                                    from State__c
                                    order by State_Name__c];

        for(State__c stt : allStates){
            if(stt.State_ISO__c == '' || stt.State_ISO__c == null){
                ob.isoCodes.add(new SelectOption(stt.State_ISO__c, stt.State_Name__c));
            }
            else{
                ob.isoCodes.add(new SelectOption(stt.State_ISO__c, stt.State_Name__c));                
            }

        }        
        System.assertNotEquals(ob.isoCodes.size(),0);


        }catch(Exception e){

            System.debug('Gayatri exception :'+e);
        }   
    }

    public static testMethod void whenUserClicksCancel(){

        BET_ObjectFactory.generateTaxExemptRequirements();
        Account aobj = ( Account)TestFactory.createSObject(new Account(Name='test acc gs250144'),true);

        // PageReference ref = new PageReference(pageName)
        // ref.getParameters().put('TaxExempt__c',obj.Id);
        // Test.setCurrentPage(ref);

        PageReference ref = Page.NewTaxExempt;
        Test.setCurrentPage(ref);
        TaxExempt__c obj=new TaxExempt__c();
        ApexPages.StandardController sc = new ApexPages.StandardController(obj);
        NewTaxExempt ob=new NewTaxExempt(sc);
        ob.cancel();  

    }    
}
4

1 に答える 1

0

コードのどの部分がテスト カバレッジで欠落しているかがわかれば、はるかに簡単になります。

  1. 開発者コンソールに移動してテストを実行します
  2. ページの下部にある [テスト] タブを選択します
  3. 右側からテストを見つけます (タイトル: 全体的なコード カバレッジ)
  4. テストをダブルクリックします

覆われていない部分は赤くなります。それらのテストを書いてみてください。

クラスのプロパティをカバーしたい場合は、次のことを行うだけです。

@isTest static void myPropertiesTest(){

    MyClass obj = new MyClass();
    obj.myProperty = SomeValue;
    // now assert a function in you class that uses this property. 

    // an easy and dumb way is to just assert the property. 
    System.assertEquals(SomeValue, obj.myProperty);
}
于 2015-09-08T04:17:52.630 に答える