OneTimeSetUp: недопустимая подпись для метода SetUp или TearDown: System-IDisposable-Dispose - PullRequest
0 голосов
/ 07 ноября 2018

Я хотел бы использовать атрибут teardown атрибута nunit в сочетании с реализацией System.IDisposable, потому что я хотел бы использовать ключевое слово use в F #. Почему я получаю эту ошибку при запуске теста?

[<TestFixture>] 
type public when_it_connects_to_database() =
    interface IDisposable with
        [<TearDown>]
        member this.Dispose() =
            this.connection.Dispose()

    member val public connection : ApplicationDbContext = createdatabasegateway true
        with get, set

    [<TestCase(true)>]
    member public this.it_succeeds(testmode:bool) : ApplicationDbContext =
        this.connection <- createdatabasegateway testmode
        this.connection

    [<Test>]
    member public this.it_can_read_the_database() =
        this.connection.AvailableExchanges.AsEnumerable().Count()

Имя теста: it_can_read_the_database Test Полное имя: tests.when_it_connects_to_database.it_can_read_the_database Тестовое задание : строка 29 Результат теста: Длительность теста не пройдена: 0: 00: 00.0000001

Сообщение о результате: OneTimeSetUp: недопустимая подпись для SetUp или TearDown Метод: System-IDisposable-Dispose

1 Ответ

0 голосов
/ 07 ноября 2018

Если тестовое устройство реализует IDisposable, NUnit утилизирует его после запуска всех тестов и запуска любого метода, отмеченного OneTimeTearDownAttribute.

Маркировка вашего метода удаления с помощью TearDownAttribute будет означать, что вы пытаетесь утилизировать объект после каждого теста, и явно не годится для каких-либо тестов после первого.

Фактическое сообщение об ошибке, которое вы видите, скрывает тот факт, что вы не должны использовать TearDownAttribute вообще для этого метода. Просто внедрите IDisposable, и объект будет удален в нужное время.

...