问题标签 [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.

0 投票
2 回答
569 浏览

.net - 是否有任何支持无头测试执行的 .NET Web 自动化框架?

类似于htmlunit,但用于 C#。我已经看到您可以通过IKVM将 htmlunit 与 .NET 一起使用,但如果可能的话,我想要一个本机解决方案。

目的是将 UI 测试添加到我们在 CI 服务器上运行的现有 (xUnit.net) 测试中。我希望能够在内存中运行 UI 测试(因为我不想在我无法控制的机器上打开浏览器实例),而不依赖于其他机器(如果我使用Selenium RC则需要, 例如)。

有谁知道实现这一目标的方法?

更新Selenium 2现在提供 HtmlUnit 作为其支持的浏览器之一。任何想在不通过 IKVM 的情况下使用 HtmlUnit 的人都应该看看 Selenium 2。我在下面更新了我的答案以反映这一点。

0 投票
1 回答
1044 浏览

unit-testing - 单独运行 xUnit Theory 时测试类构造函数不执行?

玩具示例代码:

在上面的示例中,如果我专门运行 test1(我使用的是 Resharper,但当我使用 xUnit GUI 时也会出现问题)我的测试失败,因为似乎 testBase 和 someTests 构造函数都没有被执行。因此,对 ManagerClass.CreateANewFoo() 的调用会引发 NullReference。

如果我在 someTests 或任何其他单独的测试中运行所有测试,则构造函数将按预期执行,并且测试以预期的方式进行。唯一将 test1 标记为不同的是它正在使用 PropertyData 属性。

任何想法为什么会发生这种情况/我做错了什么?

0 投票
1 回答
757 浏览

msbuild - 将 TeamBuild 的一部分运行为 x64 [用于 xunit.net 测试]

使用 Team Foundation Build,我正在调用 xunit.net xunit 任务,/platform:AnyCpu但我对 TFSBuild.proj 的 TeamBuild 调用是普通的。

我有许多特定于 x64 的测试(`/platform:x64'),它们被 ImageFormatException 阻塞。我还有一个标记为 x86 的测试组件,因此它不能是全部或全部。

NUnit 在 MSBuild 任务上有一个平台开关,xunit 没有。

我可以想到以下方法:

  1. 调用 64 位 msbuild 子任务来调用 xunit 任务 - 没有 ToolPath 参数,所以如果这是个好主意,那么在子环境中传递的最干净的 Exec 任务语法是什么?
  2. 使用 xunit.console.x64 调用 64 位的特殊情况
  3. 将整个 TeamBuild 切换到 x64 和特殊情况下的 x86 (但这只是让我处于相反的情况下需要 x86 的特殊情况下)。(我还假设除了必须确保自定义任务在正确的 PROGRA~...\MsBuild 目录中之外,可能会更麻烦)

其他人在处理此类问题方面取得了哪些成功?

0 投票
1 回答
935 浏览

visual-studio - 从 Gallio 和 xunit.net 获取要显示的控制台输出

以前使用 xunit.net / testdriven.net 执行单元测试时,我可以在输出窗口中看到写入控制台的输出(通过 Console.WriteLine)。

我现在使用 Gallio TestDriven.Net runner 来执行 xunit.net 测试(Gallio TestDriven.Net Runner - 版本 3.0.6 build 787) - 我发现它不再捕获控制台输出。

Gallio 看起来非常可配置,这是可以启用的吗?

0 投票
11 回答
97925 浏览

c# - 串行执行单元测试(而不是并行)

我正在尝试对我编写的 WCF 主机管理引擎进行单元测试。该引擎基本上根据配置动态创建 ServiceHost 实例。这使我们能够动态地重新配置哪些服务可用,而不必在添加新服务或删除旧服务时将所有服务关闭并重新启动它们。

但是,由于 ServiceHost 的工作方式,我在对该主机管理引擎进行单元测试时遇到了困难。如果已经为特定端点创建、打开并且尚未关闭 ServiceHost,则无法为同一端点创建另一个 ServiceHost,从而导致异常。由于现代单元测试平台并行执行测试,我没有有效的方法对这段代码进行单元测试。

我使用过 xUnit.NET,希望由于它的可扩展性,我可以找到一种方法来强制它连续运行测试。但是,我没有任何运气。我希望 SO 上的某个人遇到过类似的问题,并且知道如何让单元测试连续运行。

注意:ServiceHost是一个 WCF 类,由 Microsoft 编写。我没有能力改变它的行为。只托管每个服务端点一次也是正确的行为......但是,它并不是特别有利于单元测试。

0 投票
2 回答
327 浏览

c# - xUnit.net Test Stripper [在部署/交付之前删除嵌入在二进制文件中的测试代码]

是否有可用的测试剥离器(如xUnit 测试模式中定义)支持删除包含标记为 [Fact]s 等的方法的类以及从二进制文件中对 xunit.dll 的依赖项[作为构建过程的一部分]?

有关完整要求和上下文的更多详细信息,请参阅此 xUnit CodePlex 帖子

如果做不到这一点(删除测试和对 DLL 的引用),是否有人有实用程序/经过验证的干净方法来删除 xunit.dll 依赖项,而无需在 .vcproj 文件等中进行过多的胡闹。

开源优先。为 NUnit 编写干净的一个可能会作为基础。

注意:我知道将代码嵌入程序集的负面影响——这个问题与此无关(除非您在阅读 codeplex 线程后觉得遗漏了一些关键点)。

0 投票
2 回答
1225 浏览

unit-testing - 如何(策略)以 BDD 样式对属性(获取/设置)进行单元测试?

我有一个(许多)具有属性的类。有些有逻辑,有些没有。假设我想测试这些属性,我该怎么做呢?

最近,我对创建单元测试的 BDD 风格很感兴趣。

这里这里

所以我会设置上下文 - 基本上创建 SUT 并加载所需的任何内容。然后在每个观察(测试方法)中,我会验证一个特定的属性是否包含它应该包含的内容。

这是我的问题。如果 SUT 有 20 个属性,那么我要创建 20 个观察/测试吗?如果其中一个属性包含更有趣的逻辑,我猜可能会更多。

但是,如果在一次观察中聚合简单的那些会更好吗?

或者如果我使用自定义属性(可以多次应用于方法)怎么办。这样我就可以做到,例如:

0 投票
3 回答
1823 浏览

resharper - ReSharper 没有看到我的 Machine.Specification 测试

我无法让 ReSharper 查看我编写的 Machine.Specification “测试”。

规范在 mSpec 的 ConsoleRunner 中运行。当我尝试在 ReSharper 中“运行单元测试”时,我收到一条消息:“未在文件中找到测试。” 规格不显示测试标记。

我在 ReSharper /bin/ 文件夹中创建了一个文件夹,并将正确的 .dll 放在那里。mSpec 插件出现在 ReSharper 中。

我可能会错过什么?

此外,如果这有所作为,我正在使用 xUnit.NET。

0 投票
4 回答
1412 浏览

c# - 测试 MVC 控制器操作 HttpAcceptAttribute 动词

对控制器操作 HttpAcceptAttribute 动词进行单元测试的最佳方法是什么?

到目前为止,我有以下,但它是如此丑陋,即使是一个母亲也不能爱它,也不是很灵活。有没有更好的办法?

谢谢麦克

0 投票
2 回答
375 浏览

visual-studio - Visual Studio“运行方法”与“实用程序测试”

我使用 XUnit 和 Resharper 来运行我的测试。在一个给定的项目中,我通常有一些实用程序测试,它们不是真正的测试,而是纯粹存在的,所以我可以轻松地执行一些代码。例如,我有一个测试,它将我的 NHibernate 映射(我使用 Fluent NHibernate)输出到一个临时目录。我真的不喜欢将这些作为测试,除了使用测试运行器之外,还有更好的方法来简单地“运行方法”吗?