저는이 클래스에 대한 단위 테스트를하고 있습니다. 삼각형 클래스는 측면을 가져 와서 삼각형이 스켈레톤, 이등변 삼각형 또는 등변점인지 결정합니다.C# Visual Studio의 단위 테스트
public struct Point
{
public int x, y;
public Point(int a, int b)
{
x = a;
y = b;
}
}
public class Triangle
{
double[] sides;
public Triangle(double a, double b, double c)
{
if ((a <= 0) || (b <= 0) || (c <= 0))
{
throw new ArgumentException(" ");
}
sides = new double[] { a, b, c };
}
public Triangle(double[] s)
{
sides = new double[s.Length];
for (int i = 0; i < s.Length; i++)
sides[i] = s[i];
}
public Triangle(Point a, Point b, Point c)
{
sides = new double[3];
sides[0] = Math.Sqrt(Math.Pow((double)(b.x - a.x), 2.0) + Math.Pow((double)(b.y - a.y), 2.0));
sides[1] = Math.Sqrt(Math.Pow((double)(b.x - c.x), 2.0) + Math.Pow((double)(b.x - a.x), 2.0));
sides[2] = Math.Sqrt(Math.Pow((double)(c.x - a.x), 2.0) + Math.Pow((double)(c.x - a.x), 2.0));
}
public Triangle(Point[] s)
{
sides = new double[s.Length];
sides[0] = Math.Sqrt(Math.Pow((double)(s[1].x - s[0].x), 2.0) + Math.Pow((double)(s[1].y - s[0].y), 2.0));
sides[1] = Math.Sqrt(Math.Pow((double)(s[1].x - s[2].x), 2.0) + Math.Pow((double)(s[1].x - s[2].x), 2.0));
sides[2] = Math.Sqrt(Math.Pow((double)(s[2].x - s[0].x), 2.0) + Math.Pow((double)(s[2].x - s[0].x), 2.0));
}
private int uniqueSides()
{
return sides.Distinct<double>().Count();
}
public bool isScalene()
{
if (uniqueSides() == 1)
return true;
return false;
}
public bool isEquilateral()
{
if (uniqueSides() == 3)
return true;
return false;
}
public bool isIsosceles()
{
if (uniqueSides() == 2)
return true;
return false;
}
}
}
isScaleneTest이 실패하고, 그 이유를 알아낼 수 없습니다?
[TestMethod()]
public void isScaleneTest()
{
Triangle target = new Triangle(1.2, 2.1, 7.1);
Assert.IsTrue(target.isScalene());
}
다른 방법을 테스트하는 방법도 문제가 있습니다. isEquilateral와 isIsosceles는 테스트를 거쳐 통과하지만 다른 테스트는 통과 할 수 없습니다. 어떤 아이디어? 생성자를 테스트 할 시점이 있습니까? 도와 주셔서 감사합니다. 이 사용자 정의 객체에 관해서
디버거를 사용하여 테스트를 수행 했습니까? –
단위 테스트와 연결되어 있지 않지만 생성자에 전달 된 세 개의 길이는 삼각형이 아닙니다. 어떤 양측의 합은 세 번째 삼각형보다 많아야합니다. – SWeko