标签: f#-unquote

F#可以使用哪些单元测试框架

我正在寻找能够利用该语言的独特功能的框架.我知道FsUnit.你会推荐别的吗?为什么?

f# unit-testing fsunit f#-unquote

14
推荐指数
1
解决办法
2544
查看次数

使用Unquote断言时出现MissingMethodException

我试图用所享有与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 对我来说也是失败的.

f# nunit missingmethodexception f#-unquote

5
推荐指数
1
解决办法
1005
查看次数

在 F# 中使用带 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)

f# f#-unquote

4
推荐指数
1
解决办法
174
查看次数

Unquote:我错过了什么?

我正在尝试让Unquote库在.NET 4中使用xUnit,而且我没有任何运气可以让测试运行.所以,我把它分解为最简单的再现步骤.有人知道我可能会缺少什么吗?

  1. 创建一个新的F#Library项目.
  2. 使用NuGet添加xUnit和Unquote引用.
  3. 粘贴以下代码......

我直接从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)

f# unit-testing f#-unquote

3
推荐指数
1
解决办法
766
查看次数

XQuery由"&amp;"引起的无效实体引用错误 实体参考

我正在尝试运行此行,xdmp:unquote(concat('<info>', string( $paragraph) , '</info>'))但我遇到以下错误:xdmp:unquote("<info>LEARNING &amp; MEMORY</info>") -- Invalid entity reference " " at line 1.看起来这个实体引用&amp;导致了问题.我试图使用replace函数删除它但它仍然存在.我该怎么办?

xquery entityreference marklogic f#-unquote

2
推荐指数
1
解决办法
436
查看次数

在多种类型上推广一个新的运算符

我使用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# generic-programming functor typeclass f#-unquote

2
推荐指数
1
解决办法
204
查看次数