Фильтрация покрытия кода путем вызова функции в OpenCover - PullRequest
1 голос
/ 21 декабря 2011

У меня есть несколько интеграционных тестов, написанных для MsTest.Интеграционные тесты имеют следующую структуру:

[TestClass]
public class When_Doing_Some_Stuff
{
    [TestInitialize]
    protected override void TestInitialize()
    {
        // create the Integration Test Context
        EstablishContext();

        // trigger the Integration Test 
        When();
    }

    protected void EstablishContext()
    {
        // call services to set up context
    }

    protected override void When()
    {
        // call service method to be tested
    }

    [TestMethod]
    public void Then_Result_Is_Correct()
    {
        // assert against the result
    }
}

Мне нужно отфильтровать результаты покрытия кода функцией по тому, кто ее вызывает.А именно, я хочу, чтобы покрытие рассматривалось только в том случае, если функция вызывается из функции с именем «When» или к которой применен определенный атрибут.

Теперь, даже если вызывается определенный метод в системев части EstablishContext некоторых тестов метод помечается как посещенный.

Я считаю, что для этого нет фильтра, и я хотел бы внести изменения самостоятельно, так как OpenCover ... хорошо ... открыт.Но я действительно понятия не имею, с чего начать.Может кто-то указать мне верное направление?

1 Ответ

1 голос
/ 22 декабря 2011

Возможно, вам лучше решить эту проблему с разработчиками OpenCover; хммм ... это был бы я тогда, если вы посмотрите на вики , вы увидите, что покрытие тестом является одной из возможных целей OpenCover.

Если вы посмотрите на разветвление , вы увидите ветку из Манкау - он первоначально указал, что собирается попробовать реализовать эту функцию, но я не знаю, как далеко он продвинулся или имеет ли он отказался от своей попытки (то, что он представил, это всего лишь небольшое повторное введение кода, позволяющего отслеживать вызовы).

OpenCover отслеживает, отправляя идентификатор посещения и обновляя следующий элемент в массиве, который находится в общей памяти (совместно используемой профилировщиком (C ++ / native / 32-64bit) и консолью (C # / managed / any-cpu)) , Я предложил ему (и это будет мой подход, когда я к нему вернусь, если больше никто этого не делает, и именно поэтому я передаю данные о посещениях таким образом), что он может захотеть добавить маркеры в последовательность, чтобы указать, что он ввел / оставил определенный метод тестирования (возможно, отфильтрованный по атрибуту [TestMethod]), а затем при обработке результатов в консоли его можно каким-то образом добавить в модель. Потоковая обработка также может быть проблемой, так как это может вызвать чередование точек посещения для параллельных тестов.

Возможно, вы подумаете о другом подходе, и я с нетерпением жду ваших идей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...