【发布时间】:2016-06-23 14:55:23
【问题描述】:
我在带有 Visual Studio 2015 的 .NET 4.5 框架上使用 C#。我正在尝试将 NUnit 支持插入到围绕 MSUnit 测试构建的自动化测试系统中。作为系统的一部分,我需要使用反射在提供的.dll 文件中找到标有TestAttribute 和TestCaseAttribute 的方法。目前这个系统已经为 NUnit 3.2.1 版本安装了 NuGet 包。
问题:有没有办法在使用旧版本的 NUnit 创建的测试中检测这些属性?例如,我有一些使用 NUnit 2.6.4 版本创建的测试,但是由于系统正在从 NUnit 3.2.1 中寻找属性,所以找不到它们对应的属性。
这是一段用于检测提供的.dll中标记为TestFixtureAttribute的测试类的sn-p代码:
var testClasses = testAssembly
.SelectMany(a => a.GetTypes())
.Where(a => a.IsDefined(typeof(TestFixtureAttribute), false));
同样,这个 sn-p 在提供的 .dll 上找不到任何测试类,因为旧的 TestFixtureAttribute 与 NUnit 3.2.1 中的不一样
我已经在 nunit3-console.exe 上成功运行了较旧的 NUnit 测试,因此目前发现测试是最大的障碍。
提前感谢您的帮助!
【问题讨论】:
-
为什么不升级“旧”单元测试中的引用。我认为它们的版本之间没有太大变化。如果升级破坏了您的单元测试,我会感到惊讶。最好只选择一个版本,然后在任何地方使用它
-
我只是一个卑微的实习生,所以我绝对可以和我的导师和经理讨论这个问题。我相信确保使用该系统的人知道他们必须使用哪个版本的 NUnit 是很容易的。
-
这个问题可能更适合 NUnit 讨论邮件列表。我可以帮助您找到属性,但我想了解更多关于您在找到测试后如何处理的信息。这将需要来回,这不太适合 SO。您的第一篇帖子将被审核,但我们会尽快批准。 groups.google.com/forum/#!forum/nunit-discuss
-
如果你只是想解决你的问题,解决方案是查看属性的字符串名称,而不是类型。
标签: c# reflection nunit