Nunit - 数据插入测试问题

时间:2013-02-18 07:54:28

标签: c# asp.net unit-testing nunit

我是Nunit测试的新手。 我正在尝试为在数据库中插入数据的方法编写测试方法。

我的代码就像:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using MBT.Entities;


[TestFixture]
public class TagStoreTest
{
    private Tag testTag;

    public TagStoreTest()
    {
      this.testTag = new Tag();
    }

[Test]
public void InsertTagTest()
{
    TagStore tagSt = new TagStore();
    bool isInserted = tagSt.InsertTag(this.testTag);

    Assert.IsTrue(isInserted);
}


[SetUp]
public void Setup()
{
    this.testTag.TagName = "testtagthroughNunit";
}

     [TearDown]
     public void TearDown()
     {

     }

 }

实际的TagStore代码就像

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MBT.Datastore;
using System.Data;

using MBT.Entities;


  public class TagStore
 {
   private string _connectionString = string.Empty;

   public TagStore()
   {
    this._connectionString = SqlHelper.GetConnectionString();
    }


    public bool InsertTag(Tag tag)
   {
     bool isInserted = false;

     using (DatabaseHelper helper = Utility.DbHelper)
     {
        int tagsAdded = helper
            .AddInputParameter("@Tag", tag.TagName)
            .AddInputParameter("@ParentTagId", tag.ParentTagId)
            .ExecuteNonQuery("Proc_InsertTags", CommandType.StoredProcedure);

        if (tagsAdded > 0)
        {
            isInserted = true;
        }
    }
    return isInserted;
 }
}

当我运行测试时,我收到错误:TagStoreTest.InsertTagTest: System.NullReferenceException : Object reference not set to an instance of an object.

代码行TagStore tagSt = new TagStore();以红色突出显示。

我不知道什么是错误的,因为我的项目成功构建但是当我运行测试时出错。

1 个答案:

答案 0 :(得分:1)

我看到你的TagStore构造函数正在设置connectionString成员。尝试调试

返回的内容
SqlHelper.GetConnectionString();

你的SqlHelper可能会玩弄技巧。

我还建议尝试使用某种模拟技术来隔离测试。对于例如您可以模拟始终返回所需连接字符串的SqlHelper对象。有很多框架可用于例如订货数量