2

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

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

我可以通过一些技巧来解决这个问题,以在其中显式删除表/删除数据,[TestCleanup]但是在这种情况下使用 SQL Compact 时,确保我从每个测试的新数据库开始的正确方法是什么?我确信答案很简单,但我似乎无法在任何地方找到它。谢谢。

编辑:目前,我正在这样做,这是可行的——但我不喜欢它。欢迎更好的想法:

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

1 回答 1

0

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

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

于 2012-05-12T14:18:26.490 回答