Я немного запутался в отношении покрытия кода.Единица измерения кода покрытия
Пример: У меня есть метод, который имеет несколько операторов if (не вложенных), каждый из которых добавляет строку, которую я возвращаю после завершения.
Мой блок-тест проверяет исходный и конечный результат, что я намеренно делаю ради этого вопроса. Ничего промежуточного (так что никаких проверок других утверждений)
Проблема: Если я запустил этот тест, я получаю покрытие на 100% кода. Проблема, с которой я сталкиваюсь в понимании этого, заключается в том, что я хочу, чтобы охват кода самого метода, а не то, сколько из моего теста ударяется. Это должно быть немного ниже, поскольку инструкции else не пострадали.
Я просмотрел различные обучающие программы и msdn об модульном тестировании и охвате кода. В некоторых случаях тесты, по-видимому, анализируют код самого метода (что я хочу сделать), но в большинстве других случаев он проверяет только тест на покрытие кода.
Мой вопрос: Есть ли способ связать тест с методом, чтобы он получал покрытие кода в методе, когда я анализирую покрытие кода тестов, или это то, что предназначено для покрытия кода, и пользователь должен написать тесты для учетной записи эти отрасли?
Спасибо за ваше время.
EDIT: Пример кода.
public static string testingString(string s1, string s2, bool isAllowed, bool isAdmin, bool isCustomer){
string result = string.Format("{0}/{1}", s1, s2);
if (isAllowed) result += "/Allowed";
if (isAdmin) result += "/admin";
if (isCustomer) result += "/customer";
return result;
}
Тест:
[TestMethod]
public void testingString_BasicTest()
{
var result = testingString("test1", "test2", false, false, false);
var expectedResult = string.Format("{0}/{1}", "test1", "test2");
Debug.WriteLine("Result should be: " + expectedResult);
Assert.AreEqual(expectedResult, url);
}
testingString_BasicTest будет иметь покрытие коды 100% в этом случае, несмотря на не попав 3 если заявления результатов.
Пример кода может помочь здесь :) – Liath
Это получает покрытие на 100% кода? Вы фактически использовали это с помощью инструмента покрытия и посмотрели отчет?] Используя какой инструмент [предположительно VS2013]? Он может получить 100% * линию * охват; каждая * строка * в вашей функции выполнена. Но ясно, что не каждый * оператор * выполняется. С ложным/ложным/ложным, «результат + = ....«Операторы явно не исполняются –
... Кроме того, необходимо следить за ограничениями в инструментах. Многие байт-кодовые инструменты могут разрешать код только до уровня« линии », потому что байт-код в лучшем случае содержит номера строк. оператор покрытия ", который отслеживает выражения * строки *, может на самом деле путать отчет о том, что« строка »полностью покрывается, если какая-либо часть любого оператора в строке выполняется. Требуется инструмент с более тонкой детализацией, чтобы сообщать о состоянии отчета, если есть несколько операторов в строке, и вы хотите, чтобы их можно было отличить друг от друга. –