测试方法失败(VS中的单元测试)

本文关键字:单元测试 VS 失败 测试方法 | 更新日期: 2023-09-27 18:19:41

我正在做一个单元测试的实验室。下面是我正在测试的应用程序(我正在测试所有的方法和构造函数)。我的所有测试都是完全接受的,那就是测试一个名为"isScalene()"的方法,该方法检查三角形是否是一个scalene(所有边都是唯一的)。

你可以在底部找到失败的测试方法。当我将"equalilater"更改为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");
    }

测试方法失败(VS中的单元测试)

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;
      }
  }
}

您不想检查(uniqueSides() == 3)而不是1吗?

不管怎样,调试代码会帮助您很快找到答案。