Поскольку, как заметил Брайан, профсоюзы F # имеют структурное равенство, это легко сделать, используя любую среду модульного тестирования, которая вам нравится.
FsUnit - это специальная библиотека для F #, построенная на основе NUnit. Моя любимая библиотека модульного тестирования для F # - это Unquote,;), которая не зависит от фреймворка, очень хорошо работает с NUnit, xUnit.net, MbUnit, ... или даже внутри FSI. Возможно, вас заинтересует это сравнение с FsUnit.
Итак, как бы вы сделали это с помощью NUnit + Unquote? Вот полный рабочий пример:
module UnitTests
open NUnit.Framework
open Swensen.Unquote
type AST =
| Variable of string
| Class of string
| Number of int
let mockFParsec_parseVariable input = Variable(input)
[<Test>]
let ``test variable parse, passing example`` () =
test <@ mockFParsec_parseVariable "x" = Variable("x") @>
[<Test>]
let ``test variable parse, failing example`` () =
test <@ mockFParsec_parseVariable "y" = Variable("x") @>
После запуска тестов с использованием TestDriven.NET результат будет следующим:
------ Test started: Assembly: xxx.exe ------
Test 'UnitTests.test variable parse, failing example' failed:
UnitTests.mockFParsec_parseVariable "y" = Variable("x")
Variable "y" = Variable("x")
false
C:\xxx\UnitTests.fs(19,0): at UnitTests.test variable parse, failing example()
1 passed, 1 failed, 0 skipped, took 0.80 seconds (NUnit 2.5.10).
person
Stephen Swensen
schedule
15.09.2011
=
поступает правильно, сравнивая всю структуру / значение.) - person Brian   schedule 15.09.2011