2016-11-15 3 views
1

私はこのケースでは、私は一般的なインタフェース持って、一般的なインタフェースのためのJUnitテストを書くことnecesaryであるかどうかを知りたい:そのインターフェイスを実装しJUnitのテスト汎用インタフェースのJava

public interface Operable <T> { 

public T suma(T ele1); 
public T resta(T ele1); 
public T division(T ele1); 
public T multiplicacion(T ele1); 
} 

そして、2つのクラスを:

public class Complex implements Operable<Complex> { 

private final double real, imag; 

public Complex(double real, double imag){ 
    this.real = real; 
    this.imag = imag; 
} 
.... 

public class Rational implements Operable<Rational>{ 
private int numerator; 
private int denominator; 

public Rational(int num, int den){ 
    if (den==0){ 
     throw new IllegalArgumentException(); 
    } 
    if (den<0){ 
     num*=-1; 
     den*=-1; 
    } 
    numerator = num; 
    denominator = den; 
} 
... 

私はクラスのためのJUnitテストをしましたが、私は再していませんインタフェースのためのテストを行う必要がある場合に味方

+0

インターフェイスについて何をテストしますか?それはコンパイルされるか、コンパイルされません。 –

+0

それは動作します、私はそのような種類のインタフェースをテストする方法があるかどうか、またはそれをテストする必要があるかどうかを知りたいのです。 – Alejandro

+0

'interface'sは機能を提供しません。実装クラスの単なる契約*です。したがって、これらの実際のクラスは、必要な振る舞いを提供するため、これらのクラスをテストするのが最も理にかなっています。あなたはインターフェースのためにどのような振る舞いをテストしますか?彼らは誰も持っていない。 – QBrute

答えて

1

号インタフェースは、呼び出し元と呼び出し先の間の契約を定義していただきありがとうございます(それは何もしない)を知っています。ユニットテストでは、このインタフェースの実装がこの契約に準拠していることを確認する必要があります。

Java 8を使用していて、インターフェイスに「デフォルトメソッド」がある場合は、インプリメンテーションの一部がインターフェイスに追加されていることに注意してください。その場合、これらの方法は単体テストでなければならない。

1

このテストはクラスにしか適していませんが、クラスのテストを書くときは、そのインターフェイスを参照として使用できます。 短い答えはいいえです。