2012-01-06 150 views
0

我正在使用单元测试实验室。下面是我测试的应用程序(我正在测试所有的方法和构造函数)。我的所有测试都是完全接受的,即测试名为“isScalene()”的方法,检查三角形是否是斜角(所有边都是唯一的)。测试方法失败(在VS中进行单元测试)

您会发现底部失败的测试方法。当我将“equalateral”更改为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 2012-01-06 13:50:19

+0

我一直这么做:) – 2012-01-06 13:51:19

+0

@JasonCraig不要忘记标记为答案。 – 2012-01-06 14:07:58

0

待办事项不是你想检查是否(uniqueSides() == 3)而不是1?

无论如何,调试代码可以帮助您快速找到自己的代码。