使用FsUnit创建测试类时,[<test>]不是成员的有效属性。为什么呢?</测试>

时间:2011-10-08 15:28:41

标签: f# fsunit

我正在摆弄一个新的F#项目(其中我没有做过很多),我的目标是以TDD方式进行。所以,我正在努力熟悉使用FsUnit,因为我在C#项目中使用NUnit有很多经验,而且它似乎是一个非常常见的框架。

我的代码如下所示:

module DatabaseReaderTest

open NUnit.Framework
open FsUnit

[<TestFixture>]
type DatabaseReaderTest ()=

    [<Test>]
    member x.ResultsAreReturnedFromDatabase =
        DatabaseReader.result.GetSqlString(1) |> should equal "first"

据我所知,这是关于FsUnit主页(http://fsunit.codeplex.com/)的示例,但编译器告诉我[<Test>]不是此语言元素的有效属性,我认为这意味着会员。

关于我在这里做错了什么提示?

谢谢!

2 个答案:

答案 0 :(得分:7)

您可能需要使用方法而不是属性。只需添加类型为单位的()参数。

答案 1 :(得分:4)

作为旁注,如果在运行测试之前不需要任何自定义初始化,并且如果您使用的是最新版本的NUnit,那么您应该能够使用具有let绑定函数的模块为了你的测试。

这为您提供了更轻量级的语法。有些人还喜欢使用双勾选语法,可以将测试名称写成普通的英语句子(在测试运行器中很好地显示):

module DatabaseReaderTest =

  [<Test>]
  let ``Results are returned from database`` () =
    DatabaseReader.result.GetSqlString(1) |> should equal "first"