C# 旋转点测试失败。为什么?
这是失败的Point.cs文件C# 旋转点测试失败。为什么?,c#,visual-studio,unit-testing,C#,Visual Studio,Unit Testing,这是失败的Point.cs文件 // Rotates the point counter-clockwise by deg degrees. For example, applying // a 90 degree rotation to (1, 0) should give (0, 1). public void rotate(double deg) { double rotCos = Math.Cos(deg * Math.PI / 180); double rotSin
// Rotates the point counter-clockwise by deg degrees. For example, applying
// a 90 degree rotation to (1, 0) should give (0, 1).
public void rotate(double deg)
{
double rotCos = Math.Cos(deg * Math.PI / 180);
double rotSin = Math.Sin(deg * Math.PI / 180);
double oldX = x;
double oldY = y;
x = oldX * rotCos - oldY * rotSin;
y = oldX * rotSin + oldY * rotCos;
Point point = new Point(x, y);
}
我运行此测试并得到结果:
“消息:Assert.AreEqual失败。应为:。实际:。”
双倍不是精确的数字。如果不指定两者之间的可接受差异,则不应对其进行平等性比较 试一试
双倍不是精确的数字。如果不指定两者之间的可接受差异,则不应对其进行平等性比较 试一试
你如何处理你的
点=新点(x,y)代码>?它会立即被删除,因为您没有将其分配给任何对象…我假设它是最终产品。实际上,我所需要的只是x,y点。@JayT,提供一个可以用来重现问题的方法。@FCin我删除了那行代码,但仍然得到了相同的结果。@Nkosi我不知道你在说什么……你如何处理你的点=新点(x,y)代码>?它会立即被删除,因为您没有将其分配给任何对象…我假设它是最终产品。实际上,我所需要的只是x,y点。@JayT,提供一个可以用来重现问题的值。@FCin我删除了那行代码,但仍然得到了相同的结果。@Nkosi我不知道你在说什么。。。
[TestMethod]
public void Rotate_Test()
{
double rotate = -90;
double i = 4;
double o = 2;
Point point = new Point(i, o);
double expectedX = 2;
double expectedY = 4;
point.rotate(rotate);
Assert.AreEqual(expectedX, point.getX());
Assert.AreEqual(expectedY, point.getY());
}
Assert.AreEqual(expectedX, point.getX(), 0.001);