Ваш тест - значение , а не функция . Значения инициализируются один раз, при запуске программы (грубо говоря). С другой стороны, функции выполняются каждый раз, когда они вызываются.
Xunit требует, чтобы тесты были функциями (в терминологии .NET, «методы»), чтобы он мог выполнять их после обнаружения.
В F # функции отличаются от значений наличием параметров: если у вас есть параметры, вы - функция; в противном случае, вы ценность. Чтобы сделать ваш тест функцией, просто дайте ему параметр unit
:
[<Fact>]
let trueIsTrue () =
let actual = returnsTrue ()
Assert.True(actual)
Такая функция будет представлена в IL как статический метод без параметров, который Xunit распознает как тест.