При создании тестового класса с FsUnit [<Test>] не является допустимым атрибутом члена. Зачем? - PullRequest
2 голосов
/ 08 октября 2011

Я возлюсь с новым проектом 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 ]

7 голосов
/ 08 октября 2011

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

4 голосов
/ 08 октября 2011

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

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

module DatabaseReaderTest =

  [<Test>]
  let ``Results are returned from database`` () =
    DatabaseReader.result.GetSqlString(1) |> should equal "first"
...