加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 用数据测试ASP.NET MVC的单元

发布时间:2020-12-16 03:54:08 所属栏目:asp.Net 来源:网络整理
导读:我们有一个疯狂的数据驱动的应用程序.我们希望对应用程序进行单元测试,但由于数据量大,开发人员无法构建完全虚假的存储库.我真的不怪他们. 了解我们正在将测试改造为现有应用程序.如果我们重新开始,我们将进行大量的架构更改,以便利用虚假存储库进行更好的单
我们有一个疯狂的数据驱动的应用程序.我们希望对应用程序进行单元测试,但由于数据量大,开发人员无法构建完全虚假的存储库.我真的不怪他们.

了解我们正在将测试改造为现有应用程序.如果我们重新开始,我们将进行大量的架构更改,以便利用虚假存储库进行更好的单元测试.

我们希望通过测试分发已知的mdf文件,复制它,并使用它来执行我们的测试.是否有批准的技术?我熟悉将资源嵌入到测试dll中,但不熟悉嵌入mdf – 如果可以的话.

一种解决方案(有点):

我最后从Andrew Tokeley的帖子中获取了关于模拟Linq数据上下文的数据(http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx)的DataContextWrapper
并创建了一个基本上是一堆列表的FakeDataContext.cs.

我写了一个真正野蛮的T4模板(想想“select * FROM<#= table.BaseClass.QualifiedName#>”)来复制来自已知良好数据库的数据,以创建一个包含以下内容的巨大类:

List<Customer> _customers = new List<Customer>();
_customers.Add(new Customer(){CustomerId = 1,CustomerName = "ACME"});

等等

这个类是25K行,但是因为t4写了所有这些行,谁在乎呢?它允许我们只模拟数据上下文,因此我们可以通过一些合理的保证测试我们的linq与假上下文,我们得到了正确的查询.最初的开发人员在回购中放置了大量的业务逻辑,因此它允许我们针对已知的良好数据测试逻辑.

解决方法

您可以在共享服务器上设置测试数据库,这样就不必部署mdf文件了吗?

此外,您可以使用TransactionScope包装所有单元测试吗?

我在我的公司使用了一个测试数据库,其中包含所有测试的众所周知的参考数据,并为集成测试创建了一个基类:

[TestClass]
public class ServiceTest
{
    private TransactionScope Transaction { get; set; }

    [TestInitialize]
    public virtual void TestInitialize()
    {
        Transaction = new TransactionScope();
    }

    [TestCleanup]
    public virtual void TestCleanup()
    {
        Transaction.Dispose();
    }
}

每个测试都将回滚所有更改,因此测试数据污染数据库没有问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读