При создании тестового класса с помощью FsUnit [<Test>] не является допустимым атрибутом члена. Зачем?

Я возлюсь с новым проектом F# (из которого я не сделал много), и я стремлюсь сделать это в стиле TDD. Итак, я пытаюсь ознакомиться с использованием FsUnit, так как у меня большой опыт использования NUnit в проектах на C#, и кажется, что это довольно распространенная среда для использования.

Мой код выглядит следующим образом:

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>] не является допустимым атрибутом этого языкового элемента, под которым я предполагаю, что он означает член.

Любые советы о том, что я делаю здесь не так?

Спасибо!

2 ответа

Решение

Вы, вероятно, должны использовать метод, а не свойство. Просто добавьте () аргумент типа единицы.

В качестве примечания: если вам не нужна какая-либо пользовательская инициализация перед запуском тестов и если вы используете последнюю версию NUnit, то вы сможете использовать модуль с let связанные функции для ваших тестов.

Это дает вам немного более легкий синтаксис. Некоторым людям также нравится использовать синтаксис двойного тика, который позволяет написать имя теста в виде обычного предложения на английском языке (что хорошо видно в тестовом прогоне):

module DatabaseReaderTest =

  [<Test>]
  let ``Results are returned from database`` () =
    DatabaseReader.result.GetSqlString(1) |> should equal "first"
Другие вопросы по тегам