【发布时间】:2018-06-05 10:51:38
【问题描述】:
我使用的是 vs2017,但我的所有单元测试都没有显示代码覆盖率。我正在使用 async/await 和 MOQ。
[TestMethod]
[TestCategory("SeriesRepository")]
public void GetSeriesAsyncShouldReturnSeriesId12345()
{
var repositoryMock = new Mock<ISeriesRepository>();
var seriesId = "12345";
var channel = 75864;
var mockSeries = new Mock<ISeries>();
mockSeries.SetupGet(x => x.SeriesId).Returns("12345");
repositoryMock
.Setup(x => x.GetSeriesAsync(seriesId, channel))
.ReturnsAsync(mockSeries.Object);
var result = repositoryMock.Object.GetSeriesAsync(seriesId, channel).Result;
result.SeriesId.Should().Be(seriesId);
}
【问题讨论】:
-
您似乎只是在调用模拟方法,这不会导致调用任何非测试代码。您希望此测试覆盖哪些代码,但未显示为已覆盖?
-
您是否在问为什么您的单元测试代码 没有显示为已覆盖,或者为什么您的实际逻辑代码 未显示为已覆盖?如果是前者,请确保您的测试实际运行。如果是后者,在哪里你在调用你的实际逻辑代码?似乎您正在设置一个模拟,然后确保模拟的行为与您模拟的一样。您想在这里测试的实际逻辑代码是什么?
标签: c# unit-testing asynchronous moq