OneTimeSetUp:SetUp或TearDown方法的无效签名:System-IDisposable-Dispose

时间:2018-11-07 02:47:22

标签: f# nunit nunit-3.0

我想将nunit的teardown属性与System.IDisposable的实现结合使用,因为我想在F#中使用use关键字。为什么在运行测试时会收到此错误?

[<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 个答案:

答案 0 :(得分:1)

如果Test Fixture实现了IDisposable,则在所有测试运行并且任何带有OneTimeTearDownAttribute标记的方法运行后,NUnit会将其处置。

TearDownAttribute标记您的处理方法将意味着您尝试在每次测试之后处理该对象,并且显然在第一次测试之后不会进行任何健康测试。

您看到的实际错误消息似乎掩盖了您根本不应该为此方法使用TearDownAttribute的事实。只需实现IDisposable,该对象将在适当的时间处理。