ReSharper dotcover показывает 0% покрытия, несмотря на тесты, проходящие через код - PullRequest
0 голосов
/ 11 мая 2018

Я предполагаю, что это ошибка с моей стороны, но я не могу понять, почему ReSharper dotcover показывает мое тестовое покрытие определенных запросов (и команд тоже) как 0%.

Итак, у меня есть .NET Core CQRS API, который состоит из большого количества EF Core LINQ. Ниже приведен простой пример одного из основных методов выполнения моих запросов (я пропустил конструктор DI, но я уверен, что вы поняли идею):

public bool Execute(SelectIsReportRequested query)
{
     var context = _clientDatabase.GetContext(query.DatabaseId);

     var result = (from a in context.Assessments
                   join r in context.Registrations on a.AssessmentId equals r.AssessmentId
                   where a.PublicId == query.ResponseId
                   select r.ReportRequested).SingleOrDefault();

     return result == 1;
}

Затем у меня есть следующий тест, который проверяет различные биты и выполняет запрос:

[TestMethod]
public void It_should_return_true_if_a_report_has_been_requested_for_the_givenassessment()
{
    const int assessmentId = 1;
    var responseId = Guid.NewGuid();
    var mockRepository = new Mock<ICViewClientContext>();

    var assessments = new List<Assessments>
    {
        new Assessments { AssessmentId = assessmentId, PublicId = responseId },
    };
     var registrations = new List<Registrations>
     {
        new Registrations { AssessmentId = assessmentId, ReportRequested = 1 },
     };

     mockRepository.Setup(x => x.Registrations).Returns(registrations.AsDbSetMock().Object);
     mockRepository.Setup(x => x.Assessments).Returns(assessments.AsDbSetMock().Object);

     var mockClientDatabase = new Mock<IClientDatabase>();
     mockClientDatabase.Setup(x => x.GetContext(1)).Returns(mockRepository.Object);

     var query = new Queries.Assessments.SelectIsReportRequested(2, responseId);
     var handler = new Queries.Assessments.SelectIsReportRequestedHandler(mockClientDatabase.Object);
     var result = handler.Execute(query);

     Assert.AreEqual(true, result);
 }

Тесты пройдены (и также не пройдут, если я нарушу логику в LINQ) или любую другую логику в коде.

Тем не менее, запуск dotcover запускает тест, проходит его, но говорит, что ни один из них не покрыт.

Я хотел бы знать, почему, потому что это действительно сводит меня с ума и беспокоит меня, что я сделал что-то совершенно неправильно!

1 Ответ

0 голосов
/ 15 мая 2018

Так что я думаю, что благодаря слепой удаче я смог решить свою проблему и хотел опубликовать то, что я сделал, на случай, если это поможет кому-то еще.

Пока я пытался заставить журналы отправляться в JetBrains, я сделал следующее:

  1. В ReSharper | Варианты… | dotCover | Общее, отключено «Использовать предварительно загруженные модульные тесты»
  2. Сохраненные настройки
  3. Вернулся и включил «Использовать предварительно загруженные модульные тесты»
  4. Сохраненные настройки

Затем я перезапустил dotcover, и внезапно все мои тестовые покрытия были показаны, и все мои выделения кода тестовой обложки были показаны правильно.

Я отправил сообщение обратно в JetBrains, и если они дадут мне какую-либо информацию о том, почему это решило проблему, я тоже опубликую это.

...