2011-01-21 8 views
0

JMockitの私の理解は、模造されたオブジェクトのすべてのインスタンスをモックで置き換えるということです(別途指示しない限り)。JMockit:モックオブジェクトを起動する必要がある場合のNullポインタエラー?

したがって私は模擬しようとしているオブジェクトをインスタンス化した後にNPEを取得することに困惑しています。

テストの目的は、NPEを引き起こすオブジェクトを調査することではありませんが、一部の入力を検証するためのデータベースアクションを実行するため、テストを実行するためには模擬する必要があります。

テスト中の私のコードは、(それが仕事のコードだとして、パスタをコピーし、それにもかかわらず、問題を強調すべきではない)、このようなものです:

public class ClassToTest{ 

    public execute(){ 
     MyDependency myDep = getDependency(); 

     myDep.doSomething(); //I get a NPE here, implying getDependency returned null 
    } 

    protected MyDependency getDependency(){ 
     return new MyDependency("an Arg", "another Arg"); 
    } 

} 

私の試験方法:

@Test 
public void testCreateHorseDogMeetingByCodeDataProviderTruncated() 
    throws IllegalArgumentException, SQLException, 
    IllegalCountryLocationCombo, MEPException { 

    // Arrange 
    ClassToTest myClass = new ClassToTest(); 

    new NonStrictExpectations() { 

     MyDependency mockDep; 

     { 
      //Set up my expectations, not related to MyDependency 
     } 
    }; 

    // Act 
    myClass.execute(); 

    // Assert 
    new Verifications() { 
     { 
      //some verification stuff 
     } 
    }; 
} 

缶誰このNPEの問題を解決してテストを終えることができますか?

答えて

1

私は、誤ってgetDependencyの実装をオーバーライドし、null値を表示させるClassToTestのサブクラスをインスタンス化していました。オートコンプリートのものだったはずです。

0

MyDependencyはインターフェイスですか?具体的なクラスも模擬する必要があるかもしれません。

MyDependency mockDepをテスト関数の引数リストに配置することもできます。それでは、検証ステップのための嘲笑されたオブジェクトもあります。

+0

MyDependencyは具象クラスです。引数リストについてのヒント – chrisbunney

関連する問題