OneTimeSetUp: недопустимая подпись для метода SetUp или TearDown: System-IDisposable-Dispose

Я хотел бы использовать атрибут teardownatatte 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 Тестовое полное имя: tests.when_it_connects_to_database.it_can_read_the_database Тест: строка 29 Результат теста: сбой Длительность теста: 0:00:00.0000001

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам