2015-11-09 5 views
6

をカバーする:Coberturaの:どのように次のような情報については、スプリング・データ@Repositoryインタフェースに

https://stackoverflow.com/a/14601831/704246

Coberturaのは、私は春を追加する方法を知りたいのですがない機器インタフェース

を行います-dataはカバレッジ結果にインタフェースします。@Repositoryの実装クラスは、実行時にSpringによって宣言されインスタンス化されるためです。

// src/main/java/my/package/MyObjectRepository.java 

@Repository 
public interface MyObjectRepository { 
    MyObject findMyObjectByCodeAndName(String code, String name); 
} 

と、次のテスト:

インターフェース、次の点を考慮私はJacocoへの切り替えを気にしない

// src/test/java/my/package/MyObjectRepositoryTest.java 

// @RunWith(SpringJUnit4ClassRunner.class) + Spring configuration 
public class MyObjectRepositoryTest { 

    @Autowired 
    private MyObjectRepository myObjectRepository; 

    @Test 
    public void myTest() { 
     myObjectRepository.findMyObjectByCodeAndName("foo","bar"); 
    } 
} 

、私はそれがいずれかの機器のインターフェースをしないことを読みました。

以下のケースはどのようにカバーできますか?インタフェースとして宣言されているMybatis Mapperに関しても同じ問題/質問が発生しますが、それらを実装する具体的なJavaクラス宣言は開発者が作成するのではなく、実行時にフレームワークによって記述されます。

私はticketを開設しましたが、私はまだ答えを待っています。

答えて

0

私が正しく理解していれば、インタフェースをカバーすることはできません。インタフェースは単に契約を定義するためのものであり、 "実行時"コマンドは含まれていません。また、コードカバレッジツールは、実行中のテストから到達可能な行だけを測定します。別の言い方をすれば、フィールド宣言、コンストラクタ、またはメソッド本体のみをカバーすることができます。

例外には、いくつかのデフォルトのメソッドを含むJava8インターフェイスがあります。

関連する問題