问题标签 [xunit.net]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - 同时适用于 xunit 和 mspec 的 Reharper 运行器插件
我已成功使用 Resharper 4.5 运行器在 vs2008 中进行 xunit 测试。现在我想尝试 MSpec,我想为 MSpec 使用 Resharper 4.5 运行器。但是我都安装了它们在启动 Visual Studio 时收到一条错误消息,即无法加载插件,因为已经加载了同名的插件。
是否可以同时加载两个插件?
visual-studio-2010 - 有没有人在运行 xunit 的情况下重新编译 5?
我安装了最新的二进制文件
http://xunitcontrib.codeplex.com/releases/view/35006
并遵循了来自
http://xunitcontrib.codeplex.com/Thread/View.aspx?ThreadId=79225
因为链接的安装说明已过时(基本上有更多的库要复制到插件目录)
现在我的 resharper 在插件对话框中显示了插件,但我根本没有测试功能。甚至 Testdriven.NET 似乎都无法识别 xunit 测试(即使我通过 xunit.installer.exe “重新安装”了它们)。
多么拖沓!任何人都可以在这里帮我一把吗?
——一月
xunit.net - 如何让 SpecFlow 使用 xUnit.net 作为测试运行器
我正在尝试使用 xUnit.net 作为 SpecFlow 的测试运行程序。官方下载区的 SpecFlow 1.2 二进制文件不包含 xUnit.net 提供程序,但 GitHub 上的主分支有一个,所以我从那里构建 SpecFlow.Core.dll。我正在使用 xUnit.net 1.5。
但是,当我在我的规范项目中更改 app.config 中的 unitTestProvider 名称时,我得到一个空引用自定义工具错误,并且生成的 .feature.cs 文件是单行:
有没有人成功让 SpecFlow 与 xUnit.net 一起工作?如果是这样,怎么做?
asp.net-mvc - 单元测试(xUnit)具有自定义输入模型的 ASP.NET Mvc 控制器?
我很难找到关于我期望是一个非常简单的场景的信息。我正在尝试对我的 ASP.NET Mvc 2 控制器上的操作进行单元测试,该控制器使用带有 DataAnnotions 的自定义输入模型。如标题所述,我的测试框架是 xUnit。
这是我的自定义输入模型:
这是我的控制器(取出一些逻辑来简化这个例子):
这是我的xUnit 事实(也简化了):
当我运行测试时,在尝试检索控制器结果(Act 部分)时,我的测试事实出现以下错误:
提前感谢您提供的任何帮助!
unit-testing - 整个系统单元测试套件应该多久运行一次?
一般来说,我仍然是一个单元测试新手。
顺便说一句,您可能还会在 xUnit.net 等其他论坛上看到这个问题,
因为这对我来说是一个重要的问题。我提前为我的
交叉发帖道歉;您的意见对我来说非常重要,并不是
这个论坛中的每个人都属于其他论坛。
我正在查看一个拥有十年历史的大型遗留系统,该系统
最近编写了 700 多个单元测试(700 个只是一个小开始)。测试恰好是用
MSTest 编写的,但这个问题适用于所有测试框架 AFAIK。
当我通过 vs2008 "ALL TESTS" 运行时,最终计数只有七个测试。
这大约是迄今为止编写的测试总数的 1%。
更多信息: ASP.NET MVC 2 RTM 源代码,包括其单元测试,
可在 CodePlex 上获得;这些单元测试也是用 MSTest 编写的,
尽管(一个不相关的事实)Brad Wilson 后来
作为高级程序员加入了 ASP.NET MVC 团队。所有 2000 多个测试都会运行,而不仅仅是少数几个。
问题:鉴于 AFAIK 单元测试的目的是识别
SUT 中的损坏,我认为“最佳实践”是始终
或至少非常频繁地运行所有测试是否正确?
更新于 2010-05-22
首先,感谢所有提供出色答案的人。您的回答证实了我的一般结论,即在每次本地重建之后运行所有单元测试是最佳实践,无论是练习 TDD(测试前)还是经典单元测试(测试后)。
恕我直言,这个问题有不止一个最佳答案,但 AFAIK SO 让我只选择一个,所以为了公平起见,我给 Pete Johns 打上了复选标记,因为他是第一名并获得了最多的选票SO社区。芬兰的 Esko Luontola 也给出了一个很好的答案(我希望他没有被火山灰掩埋)和两个非常好的链接,恕我直言;绝对是 FIRST 的链接对我来说是鼓舞人心的;AFAIK,.NET 世界中只有 xUnit.net 提供“任何订单,任何时间”。Esko 的第二个链接是由 JB (Joe) Rainsberger 提供的真正出色的 92 分钟视频“集成测试是骗局”(http://jbrains.ca,其中有更多值得我花时间的内容)。顺便说一句,Esko 的博客也值得一游http://orfjackal。
nunit - xUnit中等效的NUnit SetUpFixture属性?
在 nUnit 中,SetUpFixture 允许我在任何测试之前运行一些代码。使用 xUnit 时有类似的情况吗?
这是标记一个类的属性,该类包含给定命名空间下所有测试装置的一次性设置或拆卸方法。
selenium - 测试用例脚本框架
对于我们的 webapp 测试环境,我们目前正在使用带有大量单元测试的 watin,并且我们正在寻求转向 selenium 并使用更多框架。
我们目前正在研究 Selenium2 + Gallio + Xunit.net,
然而,我们真正想要解决的一件事是编译测试用例。理想情况下,我们希望测试用例可以在 VS 中使用智能感知进行编辑,但不需要每次进行小改动时都重新编译程序集,
是否有任何框架可能有助于解决这个问题?是否有任何不错的 UI 工具来帮助管理大量测试用例?
理想情况下,我们希望测试用例编写过程简单,以便更多的测试人员可以帮助编写它们。
干杯
git - TeamCity 构建不运行新的 XUnit 测试
我将 TeamCity 5 与 Git VCS 和 Visual Studio 2010 SLN 构建运行器一起使用。
我的解决方案有一个类库 proj,其中包含许多 XUnit 1.5 测试。此项目的构建后事件运行测试
$(SolutionDir)libs\XUnit-1.5\xunit.console.exe $(SolutionDir)MyTestProj\$(OutDir)\MyTestProj.dll
这适用于在我的开发机器上运行我的所有测试,并且在 TeamCity 构建代理上运行良好。
但是,我最近在这个项目中添加了一个新的 XUnit 测试功能,将其提交到 github,它被 TeamCity 拾取并运行了一个构建。但新的测试并未包含在运行中。
似乎源代码已签出到我的 git 存储库 (c:\my_source) 的不同目录(例如 c:\checkedoutsource),并且当 SLN 构建运行器构建我的解决方案时,构建后事件“运行测试”的目标是c:\checkedoutsource\bin\debug\MyTestProj.dll 而不是 c:\my_source\bin\debug\MyTestProj.dll
任何人都对如何让 TeamCity 构建我的测试项目并针对新创建的测试程序集运行构建后事件有任何建议?(无需编写强大的 MSBuild 脚本文件)。
即是否可以在构建运行器中设置诸如 $(SolutionDir) 之类的 Visual Studio 变量?
希望有道理,谢谢
c# - 属性不能在 C++/CLI 中重复,但在 C# 中可以吗?
我正在error C3095: 'Xunit::Extensions::InlineDataAttribute': attribute cannot be repeated
使用 C++/CLI 代码,但不是 C#。
xUnit.net看起来像是我祈祷的答案 - 一个现代的单元测试框架,带有与 C++/CLI 一起工作的 GUI。但是,使用他们的参数化测试方法给了我错误 C3095,如下所示。
有任何想法吗?
我正在使用最新的 xUnit.net 1.6 和 Visual Studio 2008SP1。
C# 中的等价物很好
.net - 执行集成测试时如何从 .Net 应用程序中隔离坏的 COM 组件 (HP Quality Center 10.0)
我目前正在开发一些基于 .Net 的软件(.Net Framework 3.5 SP1),它通过它的 COM 客户端 API(通常称为 TDApiOle80 或 TDApiOle80.TDConnection)与 HP Quality Center 10.0 集成。
我们正在使用 XUnit 1.6.1.1521 和 Gallio 3.1.397.0(从 msbuild 文件调用)
我们经历了一个过程:
- 创建连接
- 运行测试
- 关闭连接
- 处置
- 强制 GC.Collection() / GC.AwaitingPendingFinalizers()
对于每个集成测试 - 每个集成测试都在其 Fact 中配置的超时运行。
我们遇到的问题是,它出现在几次测试(比如大约 10 次左右)之后,质量中心在调用时会无限期阻塞 - 整个 Gallio 冻结并且不再响应。
最初我们发现 xunit.net 仅将它的超时应用于事实中的代码 - 所以它会无限期地等待构造函数或处置方法完成 - 所以我们将该逻辑移动到测试主体中只是为了确认......但是这还没有解决问题(运行一定数量的测试后仍然会挂起)。
使用 TestDriven.Net 时也会发生同样的事情 - 可以交互地运行 1 个或几个测试,但超过 10 个测试并且整个运行冻结 - 我们唯一的选择是终止 TD.Net 使用的 ProcessInvocation86.exe 进程。
有没有人有关于如何阻止这种情况发生的任何提示/技巧,或者至少将我的集成测试与这些类型的问题隔离开来——以便 QC API 无限期阻塞的测试,测试将因超时而失败并且让加里奥进入下一个测试。
更新
使用 STA 线程的提示有助于将问题向前推进一点 - 通过自定义 XUnit.Net 属性,我们现在在它自己的 STA 线程中启动测试。这已经阻止了 Gallio/TestDriven.Net 完全锁定,因此我们可以在我们的 hudson 构建服务器上运行集成测试。
相反,我们现在在使用 TestDriven.Net 运行测试时会看到这样的输出 - 顺便说一下,运行同一个套件几次将导致所有测试通过,或者通常只有一两个测试失败。在第一次失败后,第二次失败会导致“卸载 appdomain 时出错”问题。
测试“IntegrationTests.Execute_Test1”失败:超过测试执行时间:30000 毫秒
测试“T:IntegrationTests.Execute_Test2”失败:卸载 appdomain 时出错。(来自 HRESULT 的异常:0x80131015) System.CannotUnloadAppDomainException:卸载 appdomain 时出错。(来自 HRESULT 的异常:0x80131015)在 System.AppDomain.Unload(AppDomain 域)在 Xunit.ExecutorWrapper.Dispose() 在 Xunit.Runner.TdNet.TdNetRunner.TestDriven.Framework.ITestRunner.RunMember(ITestListener 侦听器,程序集程序集,MemberInfo 成员) 在 TestDriven.TestRunner.ThreadTestRunner.Runner.Run() 的 TestDriven.TestRunner.AdaptorTestRunner.Run(ITestListener testListener, ITraceListener traceListener, String assemblyPath, String testPath)
4 次通过,2 次失败,0 次跳过,耗时 50.42 秒(xunit)。
我还没有确定为什么 Quality Center API 会无限期地随机挂起 - 不久将对此进行进一步调查。
2010 年 7 月 27 日更新
我终于确定了挂起的原因 - 这是有问题的代码:
似乎在 ConnectProjectEx 之后调用 Connect 有可能被阻塞(但它是不确定的)。删除冗余连接调用似乎显着提高了测试的稳定性 - 正确的连接代码:
继承了代码库后,我没有过多考虑连接代码。
我还没有弄清楚的一件事是为什么即使使用上面包含的超时代码, Thread.Join(timeout) 也永远不会返回。您可以附加一个调试器,它只显示测试线程处于加入/等待操作中。也许与在 STA 线程中执行有关?