在JUnit测试之间清理SQL Compact DB中的数据

时间:2010-12-03 18:50:55

标签: unit-testing entity-framework-4 sql-server-ce ctp4

我正在使用仅代码持久性的MVC2,实体框架和CTP4。我已经在MSUnit中为我的域对象创建了一些单元测试,包括一些用于查看持久性如何在这个范例中工作的单元测试。我正在使用Sql Server CE 4.0进行这些测试。这样可以正常工作,除了一个问题......数据似乎在同一个类中的测试之间保持不变。

我以前有使用Java,Hibernate Annotations和HSQLDB的经验,在这种情况下,DB会在每次测试执行时创建并拆除。但是,在SqlCompact中,我有几个测试使用相同的测试数据夹具,如果我同时运行它们,最终会出现约束违规。

我可以通过一些黑客来解决这个问题,在[TestCleanup]内明确删除表/删除数据但是在这种情况下使用SQL Compact时,确保每次测试都使用新数据库的正确方法是什么?我确定答案很简单,但我似乎无法在任何地方找到答案。感谢。

编辑:目前,我正在这样做,这有效 - 但我不喜欢它。欢迎更好的想法:

    [TestCleanup]
    public void teardown()
    {
        mgr.Database.DeleteIfExists();
        mgr.Database.Create();
    }

1 个答案:

答案 0 :(得分:0)

我认为更好的方法是将您在拆解时的代码添加到[TestInitialize]中,在每次测试执行之前调用它。将其与[ClassInitialize]进行比较,后者将为整个灯具调用一次。

我对NUnit更熟悉,并发现此表有助于将NUnit属性映射到MSUnit http://blogs.msdn.com/b/nnaderi/archive/2007/02/01/mstest-vs-nunit-frameworks.aspx