属性测试在单元测试失败时运行,即使它确实通过了

时间:2015-11-29 13:07:20

标签: f# nunit fscheck fsunit

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

代码如下:

module Tests.Units

open FsUnit
open NUnit.Framework
open NUnit.Core.Extensibility

open FsCheck.NUnit
open FsCheck.NUnit.Addin
open FsCheck

let add x y = (x + y)

let commutativeProperty x y = 
    let result1 = add x y
    let result2 = add y x // reversed params
    result1 = result2

[<Test>]
let ``When I add two numbers, the result should not depend on parameter order``()=
    Check.Quick commutativeProperty |> should equal true

要点:

  

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

     

测试FullName:Tests.Units。当我添加两个数字时,结果应该是   不依赖于参数顺序

     

测试结果:失败

     

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

     

在Tests.Units.When我添加两个数字,结果不应该依赖   参数order()

     

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

     

结果StandardOutput:好的,通过了100次测试。

我正在读这个吗?

我错过了什么?

1 个答案:

答案 0 :(得分:3)

改为使用$(document).on('submit', '#upload', function(){ /*First, How to handled the dynamic row ?? */ /* Commonly, I use var aVar = $('selector').val(); */ /* Ex, I have two rows, How bout to handle two select option in different row ?*/ $.ajax({ url: 'LINK TO CHECK THE POST if has SUBMITTED', type: 'POST', data : {/*dynamic row that will be passed : data*/} dataType: 'json', success: function(obj) { }) return false; });

Check.QuickThrowOnFailure

由于看起来你试图在像NUnit这样的单元测试框架中运行属性,你应该考虑使用其中一个Glue Libraries来进行FsCheck:

这使您可以使用[<Test>] let ``When I add two numbers, the result should not depend on parameter order``()= Check.QuickThrowOnFailure commutativeProperty 属性编写属性:

[<Property>]

由于NUnit的可扩展性差的API,你可以使用xUnit.net而不是NUnit来节省很多麻烦。