2016-09-01 8 views
1

私はJava 1.8を使用していて、Interfaceのデフォルトメソッドを使用しています。 私たちはすべてのメソッドに対してJUnitを書くことを目標にしているので、デフォルトメソッドとしてJunitを書く必要があります。誰かが私たちがそれを達成できるかどうかを教えてください。インターフェイスでデフォルトメソッドのJunit Testcaseを書く

マイ・インターフェースは以下の通りです。

public interface DataFilter { 

    default public TableInclusions parseYaml(String path) throws IOException { 

    Resource resource = new ClassPathResource(path); 
    Yaml yaml = new Yaml(); 
    yaml.setBeanAccess(BeanAccess.FIELD); 
    return yaml.loadAs(resource.getInputStream(), TableInclusions.class); 
    } 

    public DBMSEvent filter(DBMSEvent jsonString) throws FilterException; 

    public void setYaml(String path); 
} 

このインターフェイスを実装するクラスのメソッドに対してJunitを記述し、このデフォルトメソッドを使用してテストする必要がありますか?あなたが行うことができ、あなたのテストで

答えて

4

DataFilter dataFilter = new DataFilter() { 
//Add no-op implementation for other methods 
}; 
datafilter.parseYaml(testPath); 

しかし、私はあなたがすべてで、このデフォルトのメソッドを持っていなければならないとは思わない、あなたのインターフェイスを追加します探して。私はそれにこのメソッドを持つTableInstructorParserを注入するほうが良いだろうと思う。それは懸念の分離のために良いでしょう。

+0

こんにちはボブは、私がチェックしようとしているものを拡張することで書くための他の方法はありますか? – Renukaradhya

+0

これはインターフェイスなので、実際には実装していて拡張していません。 これを実現したかどうかは不明ですが、テストメソッド内でこれを明示すること(そして明示的なクラスを作成しないこと)は、 – mmalmeida

関連する問題