Метод теста не пройден (юнит-тестирование в VS) - PullRequest
0 голосов
/ 06 января 2012

Я работаю над лабораторным практикумом с юнит-тестированием. Ниже приложение, которое я тестирую (я тестирую все методы и конструктор). Все мои тесты завершены, примите один, то есть тестирующий метод isScalene (), который проверяет, является ли треугольник разносторонним (все стороны уникальны) или нет.

В нижней части вы найдете метод испытаний, который не пройден. Когда я изменяю «равный» на «Истинный» и «разносторонний» на «Ложный», он проходит. Что-то не так в приложении, но я просто не могу понять, что это такое (возможно, в "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");
    }

Ответы [ 2 ]

5 голосов
/ 06 января 2012

isEquillar должен использовать 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 голосов
/ 06 января 2012

Разве вы не хотите проверять, если (uniqueSides() == 3), а не 1?

В любом случае, отладка кода помогла бы вам очень быстро это выяснить.

...