【问题标题】:How to make visual studio run TestInitialize once when doing integration test?进行集成测试时如何使Visual Studio运行TestInitialize一次?
【发布时间】:2015-02-16 14:59:56
【问题描述】:

当我运行所有测试时,带有[TestInitialize] 属性的方法会针对我拥有的每个测试方法执行。

测试属于集成测试类型,用于测试数据库访问逻辑。在带有[TestInitialize] 属性的方法中,我将一些测试数据插入到数据库中,多次执行时会导致以下异常:

结果信息:初始化方法 ......FilterRepositoryTests.Initialize 抛出异常。 System.Data.Entity.Infrastructure.DbUpdateException: System.Data.Entity.Infrastructure.DbUpdateException:发生错误 在更新条目时。有关详细信息,请参阅内部异常。 ---> System.Data.Entity.Core.UpdateException:发生错误时 更新条目。有关详细信息,请参阅内部异常。 ---> System.Data.SqlClient.SqlException:无法在其中插入重复的键行 具有唯一索引“IX_Name”的对象“dbo.User”。重复键 值为(人 1)。声明已终止..

插入数据需要一些时间,所以我宁愿不为我拥有的每个测试方法删除并重新创建数据库。

那么我怎样才能对所有测试只执行一次初始化/设置方法呢?

【问题讨论】:

  • 如果您只想为整个测试类设置一次数据,您是否查看过ClassInitialize 属性?
  • 不,我不知道它的存在,但这有效!谢谢。

标签: c# entity-framework integration-testing


【解决方案1】:

您可以使用ClassInitialize 属性,该属性将为该类中的所有测试方法调用一次。

完成测试后,您可能需要使用ClassCleanup 属性进行清理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多