【发布时间】:2015-07-28 17:30:34
【问题描述】:
我正在开发一个几何库。有 200 多个单元测试。
当我选择“全部运行”时,有一个特别顽固的测试会失败,但是当我单独运行该测试或在其上使用调试器时测试通过了。我确实相信当我从 Visual Studio '13 转换到 '15 版本时,问题就出现了。
现在关于几何库的一些注意事项:
对象是不可变的。
测试之间没有共享对象。
所以我的问题:这种奇怪行为的可能原因是什么?
编辑:
[Test()]
public void Plane_IntersectionWithPlane_IdenticalPlane()
{
Plane testPlane = new Plane(new Direction(Point.MakePointWithInches(2, -1, 1)),
Point.MakePointWithInches(2, 1, 2));
Line found = (testPlane.Intersection(testPlane));
Line expected = new Line(new Direction(Point.MakePointWithInches(0, -1, -1)),
Point.MakePointWithInches(2, 1, 2));
Assert.IsTrue(found.Equals(expected));
}
【问题讨论】:
-
你有什么问题?
-
在使用 NUnit 时是否有任何众所周知的怪癖,这些怪癖在作为组的一部分运行时可能会导致测试失败,而不是单独运行?
-
不,这很可能在您这边。展示一个简短的、可重现的示例来演示问题,我们可以查看确切的问题。可能存在共享资源、不正确的异步性或无数其他可能性。
-
您正在使用 Point 类静态调用函数 MakePointWithInches。一个测试可以依赖于另一个也使用此功能的测试的唯一情况是......你检查它吗?能分享一下Point类的实现吗?
-
恕我直言,您需要提供更多详细信息。有了给定的信息,就有太多的可能性:线程、静态成员、缓存……
标签: c# unit-testing nunit