2012-01-06 15 views
0

私はユニットテストで実用的な実験室で作業しています。以下は私がテストしているアプリケーションです(私はすべてのメソッドとコンストラクタをテストしています)。すべての私のテストは、isScalene()というメソッドをテストしています。これは、三角形がスカラー(すべての辺が一意であるかどうか)をチェックします。テスト方法が失敗する(VSのユニットテスト)

テストメソッドが失敗したことがわかります。私が "等しく"をTrueに、 "scalene"をFalseに変更すると、それは合格となります。何かのアプリケーションで間違っているが、私はちょうど(ただし)は、おそらく(uniqueSides」で)それが何であるかを把握することはできません。

誰かが私を助けることができれば、私は感謝される!

public class Triangle { 
    double[] sides; 

    public Triangle(double a, double b, double c) { 
     if ((a <= 0) || (b <= 0) || (c <= 0)){ 
      throw new ArgumentOutOfRangeException("Sidorna måste vara större än 0."); 
     } 
    sides = new double[] { a, b, c }; 
    } 

    private int uniqueSides() { 
    return sides.Distinct<double>().Count(); 
    } 

    public bool isScalene() { 
     if (uniqueSides() == 1){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 

    public bool isEquilateral() { 
     if (uniqueSides() == 3){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 

    public bool isIsosceles() { 
     if (uniqueSides() == 2){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
} 

...

[TestMethod()] 
    public void isScalene3Test3() 
    { 
     Triangle triangle = new Triangle(25, 250, 2000); 

     var isosceles = triangle.isIsosceles(); 
     var equalateral = triangle.isEquilateral(); 
     var scalene = triangle.isScalene(); 

     Assert.IsFalse(isosceles, "Test Isosceles"); 
     Assert.IsFalse(equalateral, "Test Equalateral"); 
     Assert.IsTrue(scalene, "Test Scalene"); 
    } 

答えて

5

isEquilateralは1つのユニークな側面を使用する必要があり、かつisScaleneは3

public class Triangle { 
    double[] sides; 

    public Triangle(double a, double b, double c) { 
     if ((a <= 0) || (b <= 0) || (c <= 0)){ 
      throw new ArgumentOutOfRangeException("Sidorna måste vara större än 0."); 
     } 
    sides = new double[] { a, b, c }; 
    } 

    private int uniqueSides() { 
    return sides.Distinct<double>().Count(); 
    } 

    public bool isScalene() { 
     if (uniqueSides() == 3){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 

    public bool isEquilateral() { 
     if (uniqueSides() == 1){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 

    public bool isIsosceles() { 
     if (uniqueSides() == 2){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
} 
+0

ああ、どのように私は盲目でしたか? ;)ありがとう! :) – holyredbeard

+0

私はいつもそれを行います:) –

+0

@JasonCraigは答えとしてマークするのを忘れないでください。 –

0

ドを使用する必要がありますあなたは1ではなく(uniqueSides() == 3)かどうかを確認したいのですか?

とにかく、コードをデバッグすることは、あなた自身で非常に迅速にこれを見つけるのに役立ちました。

関連する問題