У меня есть следующий код:
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?