まず、F# でのテスト セットアップを示します (NUnit の上に FsUnit を使用)。
type SimpleRecord = { A: int; B: int }
override x.ToString() = x.A.ToString()
[<TestFixture>]
type ``Simple Test Cases``() =
static member SimpleDataSource =
[|
[|{ A = 1; B = 2} ,3|]
|]
[<TestCaseSource("SimpleDataSource")>]
member x.``SimpleTest`` (testData: SimpleRecord * int) =
let data, expected = testData
data.A + data.B
|> should equal expected
このテストは実行され、期待どおりに合格します。ただし、ToString
オーバーライドを変更して呼び出しを含めるとGuid.ToString()
、テストが実行されなくなります。
type SimpleRecord = { A: int; B: int }
override x.ToString() = x.A.ToString() + Guid.NewGuid().ToString()
上記の変更により、テストは引き続きテスト エクスプローラーに表示されますが、実行されません。それを右クリックして [選択したテストを実行] を選択しても、テストは実行されません。ビルド エラーは報告されません。
DateTime.ToString()
の代わりにを使用して実験しましGuid.ToString()
たが、それも実行を拒否します:
type SimpleRecord = { A: int; B: int }
override x.ToString() = x.A.ToString() + DateTime.Now.ToString()
テスト対象の型のオーバーライド内でGuid.ToString()
orを呼び出すと、テストが実行されないのはなぜですか?DateTime.ToString()
ToString