问题标签 [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.
f# - F# 单元测试:nunit.framework 程序集未引用错误
我正在玩 F# 中的单元测试。我正在运行 Visual Studio 2013 社区版。我创建了一个测试项目并安装NUnit 2.6.4
了FsUnit 1.3.0.1
. 我使用了包管理器控制台。我在项目中添加了对库的引用,在我的脚本文件中我引用了 DLL 并添加了open
子句:
我的代码中没有错误或警告。但是,当我在 F# Interactive 中运行代码时,最后一行会触发以下错误:
Test.fsx(8,6)
: errorFS0074
: 通过引用的类型'NUnit.Framework.Constraints.Constraint'
是在未引用的程序集中定义的。您必须添加对 assembly 的引用'nunit.framework'
。
但我已经添加了对nunit.framework
.
我清理了项目,重新安装了软件包,删除并添加了引用,但结果是一样的。我仍然得到错误。知道问题出在哪里以及如何解决吗?
f# - 如何正确使用 NUnit 和 F#?
我一直坚持单元测试。我有以下源代码:
一般来说,它运行良好....但没有 [] 功能。我收到以下异常:结果消息:SetUp 或 TearDown 方法的签名无效:在测试前运行
有人知道为什么吗?第二个问题是:是否可以编写一个没有类型定义但 SetUp 也可以工作的单元测试?我的意思是这样的:
我又遇到了和以前一样的异常
f# - F# 模块成员未初始化
我正在使用 FsUnit 和 NUnit 用 VS2015 Ultimate CTP 的 NUnit 测试适配器在 F# 中编写单元测试。我遇到了一个奇怪的问题,模块成员为空,我不希望它是。
这是代码的问题,还是测试执行方式的问题?
我尝试将签名更改Foo.SpecificFooStrategy.create
为unit -> FooStrategy
( let create = fun () -> ...
) 并调用 as Foo.SpecificFooStrategy.create ()
,但这并没有帮助。
代码
测试
f# - FsUnit 断言异常消息
如何断言 FsUnit 中的异常消息?来自 NUnit 的类似内容:
编辑:我不关心异常本身,我想测试异常 MESSAGE。
unit-testing - 当被测类型覆盖 ToString 时无法运行 TestCaseSource 测试
首先,让我介绍一下 F# 中的测试设置(在 NUnit 之上使用 FsUnit):
此测试将按预期运行并通过。但是,将ToString
覆盖更改为包含调用Guid.ToString()
将阻止运行测试:
通过上述更改,测试仍然出现在测试资源管理器中,但不会运行。即使右键单击它并选择 Run Selected Tests 也不会执行测试。没有报告构建错误。
我也尝试过使用DateTime.ToString()
而不是Guid.ToString()
,但这也拒绝运行:
为什么调用Guid.ToString()
或覆盖正在测试的类型会导致测试不运行DateTime.ToString()
?ToString
f# - 如何在 Visual Studio 的 F# 中发现和运行 fsunit.xunit 测试?
我是单元测试的新手,但我想在 F# 中试验 xunit(在全新的 VS2015 安装中)。我创建了一个新库,运行:
...我可以创建一个测试:
,但是当我右键单击并执行“运行测试”时,它找不到我的测试。
当我搜索扩展时,在线搜索结果中有一个“xUnit.net runner for Visual Studio”,但它显示“不再需要。请卸载此扩展。” 所以我不想安装它。
我错过了什么,才能发现和运行测试?
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 次测试。
我读对了吗?
我错过了什么?
f# - MathNet Numerics 需要 FsUnit.CustomMatchers 才能成功构建。用完了选项
在尝试MathNet Numerics
从GitHub构建最新版本时Visual Studio Community 15
,MathNet.Numerics.sln
需要安装用于单元测试的 DLL。
因此,在 Visual Studio 中使用 NuGet 可以成功安装以下内容。
剩下的唯一DLL是
我无法找到。
提示是..\..\packages\test\FsUnit\lib\FsUnit.CustomMatchers.dll
,但下没有test
目录packages
。
我该如何正确解决这个问题?
我需要 DLL,如果需要,它在哪里?
我需要手动修复代码吗?
我需要更新提示吗?
TLDR;
如果我在没有丢失 DLL 的情况下构建,则基本错误是:
可以通过安装解决
并添加
签名为
但这不正确,因为它没有安装正确的 DLL ( Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
vs FsUnit.CustomMatchers
),并且根据过去的 F# 单元测试经验,我知道这样做可能会导致误报的字幕。
编辑:
成功安装后,我想知道这是在哪里记录的。
请参阅:构建 Math.NET 数值
unit tests
包括文档和 api 参考、NuGet 和 Zip 包在内的全自动构建使用 FAKE。
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
.
而且我没有FsUnit
为Source
项目安装,因为Source
不需要测试库。
我想让它类似于<scope>test</scope>
Maven 中的 JUnit 依赖项。
我成功构建了整个解决方案。
当我在“测试资源管理器”中运行测试时(我还安装了“NUnit3 测试适配器”扩展),出现以下错误:
经过一些随机尝试,我也通过安装FsUnit
到Source
项目成功地执行了测试。
我有一个关于这个问题的理论。
我安装了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#冲突。
但我不知道如何证明它或如何解决它。
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# 互操作的一些问题。如果是这样,如何解决?