问题标签 [fsunit]

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 回答
673 浏览

f# - F# 单元测试:nunit.framework 程序集未引用错误

我正在玩 F# 中的单元测试。我正在运行 Visual Studio 2013 社区版。我创建了一个测试项目并安装NUnit 2.6.4FsUnit 1.3.0.1. 我使用了包管理器控制台。我在项目中添加了对库的引用,在我的脚本文件中我引用了 DLL 并添加了open子句:

我的代码中没有错误或警告。但是,当我在 F# Interactive 中运行代码时,最后一行会触发以下错误:

Test.fsx(8,6): error FS0074: 通过引用的类型'NUnit.Framework.Constraints.Constraint'是在未引用的程序集中定义的。您必须添加对 assembly 的引用'nunit.framework'

但我已经添加了对nunit.framework.

我清理了项目,重新安装了软件包,删除并添加了引用,但结果是一样的。我仍然得到错误。知道问题出在哪里以及如何解决吗?

0 投票
1 回答
1387 浏览

f# - 如何正确使用 NUnit 和 F#?

我一直坚持单元测试。我有以下源代码:

一般来说,它运行良好....但没有 [] 功能。我收到以下异常:结果消息:SetUp 或 TearDown 方法的签名无效:在测试前运行

有人知道为什么吗?第二个问题是:是否可以编写一个没有类型定义但 SetUp 也可以工作的单元测试?我的意思是这样的:

我又遇到了和以前一样的异常

0 投票
1 回答
86 浏览

f# - F# 模块成员未初始化

我正在使用 FsUnit 和 NUnit 用 VS2015 Ultimate CTP 的 NUnit 测试适配器在 F# 中编写单元测试。我遇到了一个奇怪的问题,模块成员为空,我不希望它是。

这是代码的问题,还是测试执行方式的问题?

我尝试将签名更改Foo.SpecificFooStrategy.createunit -> FooStrategy( let create = fun () -> ...) 并调用 as Foo.SpecificFooStrategy.create (),但这并没有帮助。

代码

测试

0 投票
1 回答
365 浏览

f# - FsUnit 断言异常消息

如何断言 FsUnit 中的异常消息?来自 NUnit 的类似内容:

编辑:我不关心异常本身,我想测试异常 MESSAGE。

0 投票
1 回答
664 浏览

unit-testing - 当被测类型覆盖 ToString 时无法运行 TestCaseSource 测试

首先,让我介绍一下 F# 中的测试设置(在 NUnit 之上使用 FsUnit):

此测试将按预期运行并通过。但是,将ToString覆盖更改为包含调用Guid.ToString()将阻止运行测试:

通过上述更改,测试仍然出现在测试资源管理器中,但不会运行。即使右键单击它并选择 Run Selected Tests 也不会执行测试。没有报告构建错误。

我也尝试过使用DateTime.ToString()而不是Guid.ToString(),但这也拒绝运行:

为什么调用Guid.ToString()或覆盖正在测试的类型会导致测试不运行DateTime.ToString()ToString

0 投票
1 回答
738 浏览

f# - 如何在 Visual Studio 的 F# 中发现和运行 fsunit.xunit 测试?

我是单元测试的新手,但我想在 F# 中试验 xunit(在全新的 VS2015 安装中)。我创建了一个新库,运行:

...我可以创建一个测试:

,但是当我右键单击并执行“运行测试”时,它找不到我的测试。

当我搜索扩展时,在线搜索结果中有一个“xUnit.net runner for Visual Studio”,但它显示“不再需要。请卸载此扩展。” 所以我不想安装它。

我错过了什么,才能发现和运行测试?

0 投票
1 回答
54 浏览

f# - 属性测试作为单元测试运行失败,即使它确实通过了

看起来我作为单元测试运行的属性测试失败了,即使它确实通过了。

代码如下:

概括:

测试名称:当我添加两个数字时,结果不应该取决于参数顺序

测试全名:Tests.Units.当我添加两个数字时,结果不应该取决于参数顺序

测试结果:失败

结果 StackTrace:在 FsUnit.TopLevelOperators.should[a,a](FSharpFunc`2 f, ax, Object y) in d:\GitHub\FsUnit\src\FsUnit.NUnit\FsUnit.fs:line 44

在 Tests.Units. 当我添加两个数字时,结果不应该取决于参数 order()

结果消息:预期:true,但是是

结果标准输出:好的,通过了 100 次测试。

我读对了吗?

我错过了什么?

0 投票
1 回答
99 浏览

f# - MathNet Numerics 需要 FsUnit.CustomMatchers 才能成功构建。用完了选项

在尝试MathNet NumericsGitHub构建最新版本时Visual Studio Community 15MathNet.Numerics.sln需要安装用于单元测试的 DLL。

因此,在 Visual Studio 中使用 NuGet 可以成功安装以下内容。

剩下的唯一DLL是

我无法找到。

提示..\..\packages\test\FsUnit\lib\FsUnit.CustomMatchers.dll,但下没有test目录packages

我该如何正确解决这个问题?
我需要 DLL,如果需要,它在哪里?
我需要手动修复代码吗?
我需要更新提示吗?

TLDR;

如果我在没有丢失 DLL 的情况下构建,则基本错误是:

可以通过安装解决

并添加

签名为

但这不正确,因为它没有安装正确的 DLL ( Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllvs FsUnit.CustomMatchers),并且根据过去的 F# 单元测试经验,我知道这样做可能会导致误报的字幕。

编辑:

成功安装后,我想知道这是在哪里记录的。

请参阅:构建 Math.NET 数值

unit tests包括文档和 api 参考、NuGet 和 Zip 包在内的全自动构建使用 FAKE。

0 投票
0 回答
195 浏览

visual-studio - FsUnit 未定义

我最近在学习 F#。今天我写了一些代码并尝试添加单元测试。

我打算创建两个项目,一个是代码,另一个是测试。

因此,我创建了一个名为Visual Studio 2015 Community 中DataLab的项目的新解决方案。Source然后我添加了另一个名为Test.

结构如下:

Queue.fs是:

QueueTest.fs是:

然后 VS 警告我open关于QueueTest.fs. 三者之一是:

未定义命名空间或模块“FsUnit”

所以我为项目添加了对Source项目的引用Test。我还FsUnit通过 NuGet 为Test项目安装。

我没有安装NUnit,因为它是FsUnit.

而且我没有FsUnitSource项目安装,因为Source不需要测试库。
我想让它类似于<scope>test</scope>Maven 中的 JUnit 依赖项。

我成功构建了整个解决方案。

当我在“测试资源管理器”中运行测试时(我还安装了“NUnit3 测试适配器”扩展),出现以下错误:

经过一些随机尝试,我也通过安装FsUnitSource项目成功地执行了测试。

我有一个关于这个问题的理论。

我安装了FsUnit 2.0.0它的依赖项FSharp.Core (>= 3.1.2.5)。所以FSharp.Core 3.1.2.5也已安装到我的Test项目中。这污染了我的Test.fsproj文件。我有以下几行Test.fsproj

同时该Source项目仍然使用VS 2015内置的F#,其版本为4.0+。所以两个版本的F#冲突。

但我不知道如何证明它或如何解决它。

0 投票
1 回答
580 浏览

f# - 测试带有函数参数的函数时出现 MissingMethodException

我正在使用 FsUnit 2.1(带有 NUnit 3.2)为 F# 项目编写测试。这是一个简单的模块:

这是我的测试:

第二个测试失败(在 NCrunch 和 ReSharper 中)并显示以下消息:

System.MissingMethodException : Method not found: '!!0 Library1.LibraryFunctions.Execute(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,!!0>)'.

如果我将要测试的模块放在与测试相同的代码文件中(而不是放在单独的 VS 项目中),则测试通过。我怀疑这是由于 NUnit 和 F#/C# 互操作的一些问题。如果是这样,如何解决?