2

我正在摆弄一个新的 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>]不是该语言元素的有效属性,我假设它指会员。

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

谢谢!

4

2 回答 2

7

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

于 2011-10-08T15:33:24.863 回答
4

附带说明一下,如果您在运行测试之前不需要任何自定义初始化,并且如果您使用的是最新版本的 NUnit,那么您应该能够使用带有let绑定函数的模块进行测试。

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

module DatabaseReaderTest =

  [<Test>]
  let ``Results are returned from database`` () =
    DatabaseReader.result.GetSqlString(1) |> should equal "first"
于 2011-10-08T15:48:06.923 回答