我正在摆弄一个新的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>]
不是此语言元素的有效属性,我认为这意味着会员。
关于我在这里做错了什么提示?
谢谢!
答案 0 :(得分:7)
您可能需要使用方法而不是属性。只需添加类型为单位的()
参数。
答案 1 :(得分:4)
作为旁注,如果在运行测试之前不需要任何自定义初始化,并且如果您使用的是最新版本的NUnit,那么您应该能够使用具有let
绑定函数的模块为了你的测试。
这为您提供了更轻量级的语法。有些人还喜欢使用双勾选语法,可以将测试名称写成普通的英语句子(在测试运行器中很好地显示):
module DatabaseReaderTest =
[<Test>]
let ``Results are returned from database`` () =
DatabaseReader.result.GetSqlString(1) |> should equal "first"