我正在寻找能够利用该语言的独特功能的框架.我知道FsUnit.你会推荐别的吗?为什么?
我试图用所享有与NUnit的为测试运行.测试用例取自" 入门",并在NUnit外部运行时按预期工作:
namespace FsTest.Tests
open NUnit.Framework
open Swensen.Unquote
[<TestFixture>]
module Example =
[<Test>]
let foo() =
test <@ (1+2)/3 = 1 @>
Run Code Online (Sandbox Code Playgroud)
在NUnit下我得到这个例外:
FsTest.Tests.Example.foo:System.MissingMethodException:找不到方法:'System.Tuple
2<Microsoft.FSharp.Collections.FSharpList1,Microsoft.FSharp.Quotations.FSharpExpr> Internal.reduceFullyAndGetLast(Microsoft.FSharp.Quotations.FSharpExpr)'.
我想知道上面的代码是否有任何问题以及如何使其工作.raise如果有帮助的话,Unquote 对我来说也是失败的.
某些测试断言框架允许您向断言添加自定义消息,例如使用 NUnit 的以下内容:
Assert.AreEqual(1, result, "the result should be one")
Run Code Online (Sandbox Code Playgroud)
在 F# 中使用Unquote时是否可以执行相同的操作?
test <@ result = 1 @>
Run Code Online (Sandbox Code Playgroud)
更新
我最接近的是在引用的表达式中添加一个简单的注释。由于我这样做的动机是记录正在验证的内容(我倾向于不止一次地断言!),这足以满足我的需求。
test <@
// the result should be one
result = 1
@>
Run Code Online (Sandbox Code Playgroud)
另一个更新
我一直在使用 Stephen 的建议ignore "description here";,我真的很喜欢。我发现如果我像这样声明自己的函数会更容易阅读:
> let inline checking _ = ()
> let result = 2;;
> test <@ checking "the result should be one"; result = 1 @>;;
Test failed:
checking "the result should be one"; result = 1
(); result …Run Code Online (Sandbox Code Playgroud) 我正在尝试让Unquote库在.NET 4中使用xUnit,而且我没有任何运气可以让测试运行.所以,我把它分解为最简单的再现步骤.有人知道我可能会缺少什么吗?
我直接从Unquote主页获得了实际测试,但内容并不重要,因为它没有运行.
module Tests
open Xunit
open Swensen.Unquote
[<Fact>]
let ``demo Unquote xUnit support`` () =
test <@ ([3; 2; 1; 0] |> List.map ((+) 1)) = [1 + 3..1 + 0] @>
Run Code Online (Sandbox Code Playgroud)
然后我编译程序集并将其加载到xUnit.net GUI测试运行器(64位,CLR 4)中,并在运行测试时收到以下错误:
Tests.demo Unquote xUnit support : System.MissingMethodException : Method not found:
'Microsoft.FSharp.Collections.FSharpList`1<Microsoft.FSharp.Quotations.FSharpExpr> Swensen.Unquote.Extensions.Expr.ReduceFully(Microsoft.FSharp.Quotations.FSharpExpr)'.
Stack Trace:
at Tests.demo Unquote xUnit support()
Run Code Online (Sandbox Code Playgroud) 我正在尝试运行此行,xdmp:unquote(concat('<info>', string( $paragraph) , '</info>'))但我遇到以下错误:xdmp:unquote("<info>LEARNING & MEMORY</info>") -- Invalid entity reference " " at line 1.看起来这个实体引用&导致了问题.我试图使用replace函数删除它但它仍然存在.我该怎么办?
我使用Unquote并没有看到任何近似的内容.所以我决定写一个.
let inline (=~=) x y = abs x-y < 1.E-10
Run Code Online (Sandbox Code Playgroud)
然而,运营商没有映射到Lists上
let test = [1;2] =~= [1;2] //---> error
Run Code Online (Sandbox Code Playgroud)
是否可以声明此运算符流动如何(=)?
或者它需要定义像'StructuralEquality-ishness'这样的新特征?
使用http://code.google.com/p/fsharp-typeclasses/来定义新的运算符是否更好?
f#-unquote ×6
f# ×5
unit-testing ×2
fsunit ×1
functor ×1
marklogic ×1
nunit ×1
typeclass ×1
xquery ×1