我是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();
以红色突出显示。
我不知道什么是错误的,因为我的项目成功构建但是当我运行测试时出错。
答案 0 :(得分:1)
我看到你的TagStore构造函数正在设置connectionString成员。尝试调试
返回的内容SqlHelper.GetConnectionString();
你的SqlHelper可能会玩弄技巧。
我还建议尝试使用某种模拟技术来隔离测试。对于例如您可以模拟始终返回所需连接字符串的SqlHelper对象。有很多框架可用于例如订货数量