Тест F # XUnit не обнаружен - PullRequest
0 голосов
/ 03 мая 2018

Бегун консоли не может обнаружить тесты в моем проекте F #. Код для проекта можно найти здесь:

https://github.com/valainisgt/FsXunitExample

Вот команда, которую я запускаю (из корня репо):

packages\xunit.runner.console.2.3.1\tools\net452\xunit.console.exe Library1\bin\Debug\Library1.dll

А вот и результаты:

xUnit.net Console Runner (64-bit Desktop .NET 4.0.30319.42000)
  Discovering: Library1
  Discovered:  Library1
=== TEST EXECUTION SUMMARY ===
   Library1.dll  Total: 0

Что здесь происходит?

1 Ответ

0 голосов
/ 03 мая 2018

Ваш тест - значение , а не функция . Значения инициализируются один раз, при запуске программы (грубо говоря). С другой стороны, функции выполняются каждый раз, когда они вызываются.

Xunit требует, чтобы тесты были функциями (в терминологии .NET, «методы»), чтобы он мог выполнять их после обнаружения.

В F # функции отличаются от значений наличием параметров: если у вас есть параметры, вы - функция; в противном случае, вы ценность. Чтобы сделать ваш тест функцией, просто дайте ему параметр unit:

[<Fact>]
let trueIsTrue () =
    let actual = returnsTrue ()
    Assert.True(actual)

Такая функция будет представлена ​​в IL как статический метод без параметров, который Xunit распознает как тест.

...