当我运行一个单元测试时,我不断收到空对象引用错误。使用NUnit进行单元测试。空对象错误
单元测试:
[Test]
public void EnumeratedData_ValidInputType_NoErrorAdded()
{
List<String> errorMessageList = new List<string>();
UserInputEntity myEntity = new UserInputEntity();
myEntity.DataTypes = new List<string>();
myEntity.DataTypes.Add("DateTime");
myEntity.DataTypes.Add("datetime");
myEntity.DataTypes.Add("decimal");
myEntity.DataTypes.Add("decIMAL");
myEntity.DataTypes.Add("DOUble");
myEntity.DataTypes.Add("double");
myEntity.DataTypes.Add("FLOat");
myEntity.DataTypes.Add("float");
myEntity.DataTypes.Add("INT");
myEntity.DataTypes.Add("int");
PathReader reader = new PathReader();
IOManager manager = new IOManager(reader);
VerificationManager testObject = new VerificationManager(manager);
testObject.EnumeratedDataTypes(myEntity, errorMessageList);
Assert.AreEqual(errorMessageList.Count, 0);
}
方法代码:
public void EnumeratedDataTypes(UserInputEntity inputs, List<String> errorMessageList)
{
inputs.EnumeratedDataTypes = new int[inputs.DataTypes.Count];
try
{
for (int i = 0; i < inputs.DataTypes.Count; i++)
{
inputs.EnumeratedDataTypes[i] = (int)Enum.Parse(typeof(Enumerations.ColumnDataTypes), inputs.DataTypes[i].ToUpper());
}
}
catch (Exception ex)
{
errorMessageList.Add(ex.Message);
}
}
枚举:
class Enumerations
{
public enum ColumnDataTypes
{
DATETIME = 0,
DECIMAL = 1,
DOUBLE = 2,
FLOAT = 3,
INT = 4
}
}
的ErrorMessage:
˚F razerMann.CsvImporter.Entity.Test.EntityVerificationTests.EnumeratedData_ValidInputType_NoErrorAdded: System.NullReferenceException:未将对象引用设置为对象的实例。
即时通讯im我忽略了一些愚蠢简单的东西,但我无法看到它。如果有人能够让我摆脱我的痛苦,我很欣赏它。
@Andres you beat me to the answer。只是一个澄清,计数实际上是0,因为该列表尚未被使用。 – JTMon 2012-08-08 14:41:19
@JTMon你说得对,对不起!它当然是在构造函数中设置的'List' _capacity_,而不是预定义的_size_。将相应地更新我的回复。 – 2012-08-08 14:50:16
安德斯,欢呼声回复。关于<=和初始化的好处。不幸的是,它仍然说我有一个相同类型的错误。我用他更新的代码编辑我的原始问题。 +1虽然:) – 2012-08-08 14:54:40