首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NUnit测试调试

NUnit测试调试
EN

Stack Overflow用户
提问于 2015-07-29 01:30:35
回答 3查看 681关注 0票数 16

我正在开发一个几何库。有200+单元测试。

有一个特别顽固的测试,每当我选择"Run All“时都会失败,但当我单独运行该测试时,或在其上使用调试器时,测试通过。我相信这个问题是在我从visual studio '13切换到'15版本时出现的。

下面是关于几何库的一些注意事项:

对象是不可变的。

测试之间没有共享对象。

所以我的问题是:这种奇怪行为的可能原因是什么?

编辑:

代码语言:javascript
复制
[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));
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-01 22:02:04

尝试以下操作:

打开Nunit GUI,在运行测试之前,在设置中更改以上设置:

它帮助我发现了我的问题。

顺便说一句:你使用的是什么版本的NUNIT?如果你不知道什么是Nunit GUI,那么你可能没有单独下载Nunit。您可以从以下位置获取安装:

http://www.nunit.org/index.php?p=download

票数 3
EN

Stack Overflow用户

发布于 2015-09-04 17:07:21

请检查是否有静态变量。静态变量存在于AppDomain级别,因此,一个测试用例设置的静态变量可能会对其他测试用例造成副作用。

您可以先在单独的应用程序域中运行此测试用例,以在开始搜索静态变量之前确认行为。很抱歉,我从来没有尝试在nunit中创建一个新的appdomain。但是这里的一个答案确实给出了一个关于如何为测试用例创建新的应用程序域的提示-- Run unit tests in different appdomain with NUnit

票数 0
EN

Stack Overflow用户

发布于 2015-09-04 23:05:46

如果此测试独立通过,但在与其他测试一起运行时失败,那么您的类中极有可能存在某种共享状态。

如果您说我们所有的对象都是不可变的,那么我的第一个猜测是看看

代码语言:javascript
复制
Line Intersection (Plane plane);

您期望此方法返回一个与您的“预期”行相同的line,因此交集可能会基于某种共享状态返回一条Line。

你能给我们展示一下交集的实现吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31683313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档