Мне нужно указать все имена методов и их модульные тесты в решении/проекте C#.Как найти все методы в решении C#
У вас есть идеи по этому вопросу?
Обновление: вы знаете какой-либо исходный парсер C#?
Мне нужно указать все имена методов и их модульные тесты в решении/проекте C#.Как найти все методы в решении C#
У вас есть идеи по этому вопросу?
Обновление: вы знаете какой-либо исходный парсер C#?
Похоже, вам нужен инструмент для покрытия кода, который анализирует ваше решение и показывает, какие строки кода тестируются, а какие нет. Посмотрите на NCover, TestDriven.NET или NCrunch.
Имейте в виду, что просто найти имена единичных тестов для некоторого метода недостаточно, потому что у метода может быть много путей выполнения кода внутри, а некоторые из них могут не покрываться испытаниями.
Вы можете использовать отражение, чтобы найти все методы (Assembly.GetTypes()
возвращает все типы, type.GetMethods()
возвращает свои методы). Поскольку модульные тесты также являются программами, вы можете выполнять итерацию через единичные тестовые методы, просматривая [TestMethodAttribute]
(в зависимости от того, какую тестовую структуру вы используете) с method.GetCustomAttributes()
.
Выяснение того, что делает каждый метод тестирования, намного сложнее, поскольку у вас нет ограничений на то, что содержит ваш тест. Инструмент покрытия кода может показать вам, какие именно части вашего кода проверены, даже части внутри каждого метода (какие ветви if
утверждений охватываются, например).
Мне нужно найти метод в исходном коде, а не в MSIL, потому что я хочу изменить код в источнике. Просто некоторые незначительные модификации, такие как изменение констант. Это накладные расходы для изменения в MSIL. – proliid
Как инструмент должен знать, как связаны методы и модульные тесты? –
Зачем вам нужна эта информация? Как вы хотите его использовать? –
Мне нужно проверить, что модульные тесты метода достаточно сильны? Мне интересно, если разработчик просто тестирует модульное тестирование, чтобы полностью охватить, но укажите что-то глупое, как Assert.IsTrue (true). Поэтому я пытаюсь изменить исходный код, удалив путь кода, изменив константы, создав решение и снова запустив тесты модулей, если есть какие-либо модульные тесты, которые всегда проходят, тогда единичный тест «слабый». – proliid