我有以下代码:什么块没有在我的测试方法中测试? (VS08测试框架)
private void SetControlNumbers()
{
string controlString = "";
int numberLength = PersonNummer.Length;
switch (numberLength)
{
case (10) :
controlString = PersonNummer.Substring(6, 4);
break;
case (11) :
controlString = PersonNummer.Substring(7, 4);
break;
case (12) :
controlString = PersonNummer.Substring(8, 4);
break;
case (13) :
controlString = PersonNummer.Substring(9, 4);
break;
}
ControlNumbers = Convert.ToInt32(controlString);
}
这是使用下面的测试方法进行测试:
[TestMethod()]
public void SetControlNumbers_Length10()
{
string pNummer = "9999999999";
Personnummer target = new Personnummer(pNummer);
Assert.AreEqual(9999, target.ControlNumbers);
}
[TestMethod()]
public void SetControlNumbers_Length11()
{
string pNummer = "999999-9999";
Personnummer target = new Personnummer(pNummer);
Assert.AreEqual(9999, target.ControlNumbers);
}
[TestMethod()]
public void SetControlNumbers_Length12()
{
string pNummer = "199999999999";
Personnummer target = new Personnummer(pNummer);
Assert.AreEqual(9999, target.ControlNumbers);
}
[TestMethod()]
public void SetControlNumbers_Length13()
{
string pNummer = "1999999-9999";
Personnummer target = new Personnummer(pNummer);
Assert.AreEqual(9999, target.ControlNumbers);
}
出于某种原因,Visual Studio中说,我有1块,是不是尽管以蓝色显示了测试方法中的所有代码(即代码已在我的单元测试中进行了介绍)。这是因为我没有在交换机中定义的默认值?当调用SetControlNumbers()方法时,它所操作的字符串已经过验证和检查,看它是否符合规范,并且交换机中的各种Substring调用将生成包含4个字符的字符串。我只是好奇它为什么说有1个未经测试的区块。我根本不是单元测试专家,所以我会喜欢这方面的一些反馈。
另外,除了添加try-catch块并检查FormatExceptions和OverflowExceptions之外,如何在转换之后改进转换以使其更安全?
当号码为<10 or > 13时会发生什么? – sbi 2010-06-01 08:33:24
此代码不会被调用,因为在调用SetControlNumbers之前会引发异常。 – Henric 2010-06-01 08:34:49
switch语句中没有默认值 – 2010-06-01 08:34:56