あなたのコードは少し奇妙ですありがとう:
public savecontroller(ApexPages.StandardController controller)
あなたのコントローラーは本当に「コントローラー」ではないようですが、Emp__cオブジェクトの標準コントローラーの拡張のような感じです。私は知っている、それはあなたの投稿に何の影響も及ぼしません(セマンティクスを除く)、BUT(!)あなたのテストクラスの書き方には影響します。これは拡張機能ですので、テストクラスは、次のようになります
@isTest
public class saveconttroller_test {
public static Emp__c test_emp; // declaration
static {
test_emp = new Emp__c();
insert test_emp; //since you have upsert you can leave this out
}
static testMethod void testsavecotroller() {
Test.startTest();
//in the next two lines we contruct standard controller and the extension
ApexPages.StandardController sc = new ApexPages.StandardController(test_emp);
savecontroller ext = new savecontroller(sc);
ext.autosave();
Test.stopTest();
}
}
を今、私はいくつかのことを指摘してみましょう...最初、私はあなたが、テストは同じくらいのコードをカバーする必要があります知っていると確信しているとして、可能。 SFは75%を必要としますが、100%に近づくほど良くなります。しかし、(!)のように、あなたのメソッドが何をしているのかを判断するには、何かを含めるべきです。あなたのケースでは例えば、私はこのような方法の自動保存()に変更になります。そうすることによって
public PageReference autosave()
{
try {
upsert emps;
return new ApexPages.StandardController(test_emp).view();
} catch(Exception e) {
return null;
}
}
を、あなたはupsertionは、この成功したかどうref1のは、あなたが期待するの参照(あるwher、あなたのテストクラスでSystem.assertEquals(ref1, ref2);
を含むことができ、 test_emp page referenceとなります)、ref2は実際にテストから取得したリファレンスになります。 もう1つは、テストでstatic
メソッドを使用しています。このメソッドで書く内容は、常にTest.startTest();
呼び出しで実行されます。
希望すると、これが役立ちます。 :) 乾杯、G