當我運行一個單元測試時,我不斷收到空對象引用錯誤。使用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