问题标签 [xunit2]

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 投票
1 回答
206 浏览

f# - 在 FAKE 构建文件中使用 xUnit2 目标获取“选项”丢失错误

当我将示例 xUnit2 目标添加到我的 FAKE 构建文件时,我收到此错误:

错误 FS0001:此表达式应具有类型字符串选项,但此处具有类型字符串

来自FAKE xunit2 文档的目标示例

Visual Studio 突出显示(testDir @@ "xunit.html")代码部分。

我知道它需要两个参数,但我对 F# 的了解还不够,无法弄清楚如何解决该问题:

在包含 xUnit 目标之前,我的 FAKE 构建工作正常。我已添加open Fake.Testing.XUnit2到构建文件中,并且 xUnit2 引用没有错误。

任何帮助,将不胜感激。

0 投票
1 回答
559 浏览

xunit - XUnit 可以在同一方法中处理测试处理类和十进制参数吗?

我有一个带有以下签名的测试方法:

我想在 XUnit 2.1 中运行它。我已经设置了我的 CalculationData 类,如果我删除第二个参数,它就可以工作。但是当我尝试通过执行以下操作将预期结果作为第二个参数传递时:

它不起作用。测试失败并显示:

测试方法需要 2 个参数值,但提供了 1 个参数值。

有任何想法吗?

0 投票
1 回答
744 浏览

unit-testing - 发现测试在 xUnit 中运行两次

我有我的解决方案设置,其中在该解决方案中配置了一个具有 xUnit 桌面运行器的 xUnit 测试项目/程序集。

当我通过在测试资源管理器窗口中运行“全部运行”来运行此解决方案的测试时,我看到以下输出:

似乎有一个“发现测试”步骤和一个“运行测试”步骤正在执行,其中每个步骤都执行“发现”和“发现”步骤,看起来它们运行了两次。

我很好奇这是按设计运行的,还是我在某处有错误的设置导致了这种行为。在我看来(或预期)“发现/发现”每次运行只会发生一次。如您所见,每次运行都会增加 2 秒,如果可能的话,我想避免这种情况。

0 投票
1 回答
724 浏览

unit-testing - 无法加载应用程序或执行命令“Microsoft.Dnx.TestHost”。可用命令:测试

尝试在 VS2015 中测试 ASPNET 5 应用程序。

但是,测试资源管理器窗口中没有显示任何测试,当我按 F5 时,我得到:

我只有一个测试,用 [Fact] 装饰,但看起来并没有那么远。

查看具有“无法加载”错误(但找不到任何特定于 TestHost)的类似问题,我尝试确保测试项目和应用程序都针对相同的框架,但找不到任何差异. 而且我在事件日志中看不到任何内容。

有什么建议么?- 甚至不知道从哪里开始解决这个问题。

0 投票
40 回答
198460 浏览

.net - 为什么 Visual Studio 2015/2017/2019 测试运行程序没有发现我的 xUnit v2 测试

更新:添加 2019;发现/运行器集成机制与 2017 和 2015 相同,因此可能出错的关键问题是相同的。


我已经阅读了为什么 xUnit 运行程序没有找到我的测试,这涵盖了 xUnit永远无法找到您的测试但我的问题不同的原因 - 我相信我的测试没有任何微妙之处;(他们在其他环境中工作过,这似乎只是我的机器) - Visual Studio 2015 [社区版] 中的 Visual Studio Test Runner 根本没有显示我的任何测试。我没有做任何令人兴奋的事情;测试针对桌面上的 xUnit.net v2。

我查看了“输出”窗口,但在“显示选项卡的输出”中的“测试”下根本看不到任何内容。

0 投票
0 回答
106 浏览

dependency-injection - Xunit 1.9.1 到 xunit 2.1.0 迁移(IOC / 依赖注入)

我需要你的专家建议

背景: 我正在将我的 Xunit 1.9.1 迁移到 2.1.0。我正在使用以下扩展 - Xunit.ioc.ninject - xunit.ioc.autofac

问题: 不再支持这两个。我正在使用 - IDependencyResolverBootstrapper - Xunit.Ioc.Autofac.TestsModule

问题: 替换的最佳方式/扩展是什么

0 投票
2 回答
442 浏览

c# - ConstructorInfo.GetParameters 是线程安全的吗?

这是一个非常奇怪的问题,我花了一天时间试图追查。我不确定这是否是一个错误,但最好能对为什么会发生这种情况有一些看法和想法。

我正在使用 xUnit (2.0) 来运行我的单元测试。xUnit 的美妙之处在于它会自动为您并行运行测试。但是,我发现的问题是,当标记为线程安全类型时,它Constructor.GetParameters似乎不是线程安全的。ConstructorInfo也就是说,如果两个线程Constructor.GetParameters同时到达,则会产生两个结果,随后对该方法的调用将返回创建的第二个结果(不管调用它的线程如何)。

我创建了一些代码来演示这种意外行为(如果您想在本地下载并尝试该项目,我也将它托管在 GitHub 上)。

这是代码:

这两个测试类确保创建两个线程并并行运行。运行这些测试后,您应该得到如下所示的结果:

(注意:我添加了“<---- 不同!”来表示意外值。您不会在测试结果中看到这一点。)

如您所见,第一次调用的结果GetParameters返回的值与所有后续调用不同。

我在 .NET 中已经有很长一段时间了,但从未见过像这样的东西。这是预期的行为吗?是否有初始化 .NET 类型系统的首选/已知方法,以免发生这种情况?

最后,如果有人感兴趣,我在使用带有 MEF 2 的 xUnit 时遇到了这个问题,其中用作字典中的键的 ParameterInfo 不返回等于从先前保存的 value 传入的 ParameterInfo。当然,这会导致意外行为并导致同时运行时测试失败。

编辑:从答案中得到一些好的反馈后,我(希望)澄清了这个问题和场景。问题的核心是“Thead-Safe”类型的“Thread-Safety”,并更好地了解这究竟意味着什么。

回答:这个问题最终是由于几个因素造成的,其中一个是由于我对多线程场景的无知无知,在可预见的未来,我似乎永远在学习,没有尽头。我再次感谢 xUnit 的设计方式以如此有效的方式学习这一领域。

另一个问题似乎与 .NET 类型系统的初始化方式不一致。使用 TypeInfo/Type,无论哪个线程多次访问它,您都会获得相同的类型/引用/哈希码。对于 MemberInfo/MethodInfo/ParameterInfo,情况并非如此。线程访问要小心。

最后,似乎我不是唯一一个有这种困惑的人,这确实被认为是对 .NET Core 的 GitHub 存储库提交的问题的无效假设

所以,问题解决了,主要是。我要感谢所有参与处理我在这件事上的无知的人,并帮助我学习(我发现的是)这个非常复杂的问题空间。

0 投票
2 回答
3209 浏览

c# - 比较两个列表使用 XUnit 断言函数

以下内容在 XUnit 中未断言为真(StartDate 和 EndDate 是 DatePeriod 仅有的两个公共属性):

根据一些研究,我预计在最新版本的 XUnit 中,这些最终会被认为是平等的,因为在使用 Assert 时,只要顺序相同。

0 投票
2 回答
3206 浏览

c# - 使用 Specflow 和 xUnit 2 (ITestOutputHelper) 进行日志记录

不幸的是,我有一个 Specflow 测试在本地通过,但它在 VSO Build vNext 服务器上失败了,我真的需要在测试运行期间查看详细信息,以便弄清楚发生了什么。

但是我正在努力尝试ITestOutputHelper像这样注入 Specflow 绑定

public SomeSteps(ITestOutputHelper outputHelper)

但 Specflow 抱怨该消息

BoDi.ObjectContainerException Interface cannot be resolved: Xunit.Abstractions.ITestOutputHelper (resolution path: ...)

在 Specflow 测试期间究竟如何查看日志和查看输出?

0 投票
1 回答
1425 浏览

unit-testing - 无法使用 xUnit.net v2 中的控制台运行器运行版本一 xUnit.net 测试

在我的项目中,我们正在升级到 xUnit 2。因此,我们升级了控制台运行器,它也用于在构建服务器上运行测试。

我们没有升级现有的测试项目以使用 xUnit 2。它们仍然指的是 xUnit.1.9.2。

根据文档,它应该可以工作。

xUnit.net v2 中的控制台运行程序能够从 xUnit.net v1 和 v2 运行单元测试。

但是我们看到错误。

这些是我从 xunit.runner.console.2.1.0 的包文件夹中复制并保存到构建服务器文件夹中的文件列表。我在脚本中使用所需参数调用xunit.console.x86.exe