我正在爲這個類進行單元測試,這是一個三角形類,它取兩邊並確定三角形是否是斜角,等腰或等邊。在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