NCrunch 单元测试代码覆盖率
NCrunch Unit testing code coverage
在我的 Visual Studio 2013 项目中,我收到来自 NCrunch 的未发现单元测试警告,其中这些函数对其他实体有很强的依赖性。我想了解是否有任何自然的方法来清除这些警告。
假设我有这样一个人class;
public class PersonApiHandler{
public virtual Person GetPersonFromFacebook(){
// heavy facebook api call here
return person; }
}
我有一个假的 class 喜欢;
public class PersonApiHandlerFake: PersonApiHandler
{
public override Person GetPersonFromFacebook(){
// fake person is returning - isolated
return fakeUser;
}
}
然后我调用这个方法;
[TestFixture]
public class PersonApiHandlerTests(){
[Test]
public void GetPerson_from_Api_success(){
PersonApiHandlerFake fake = new PersonApiHandlerFake();
var fakeFacebookUser = fake.GetPersonFromFacebook();
Assert.IsNotNull(fakeFacebookUser );
}
在这种情况下,NCrunch 抱怨 PersonApiHandler.GetPersonFromFacebook 没有代码覆盖。由于这个函数调用了真实的 API,我不能在我的单元测试中使用它。我发现使用 [ExcludeFromCodeCoverage] 属性禁用此警告的唯一方法。这是正确的做法还是有任何其他方法可以清除未覆盖的代码消息?
NCrunch 支持使用 specific inline comments 到 select 一行或多行它应该从覆盖范围中忽略的代码。您可以使用//ncrunch: no coverage start
和//ncrunch: no coverage end
来标记代码块的开始和结束,或者使用//ncrunch: no coverage
来忽略单行代码。
在我的 Visual Studio 2013 项目中,我收到来自 NCrunch 的未发现单元测试警告,其中这些函数对其他实体有很强的依赖性。我想了解是否有任何自然的方法来清除这些警告。
假设我有这样一个人class;
public class PersonApiHandler{
public virtual Person GetPersonFromFacebook(){
// heavy facebook api call here
return person; }
}
我有一个假的 class 喜欢;
public class PersonApiHandlerFake: PersonApiHandler
{
public override Person GetPersonFromFacebook(){
// fake person is returning - isolated
return fakeUser;
}
}
然后我调用这个方法;
[TestFixture]
public class PersonApiHandlerTests(){
[Test]
public void GetPerson_from_Api_success(){
PersonApiHandlerFake fake = new PersonApiHandlerFake();
var fakeFacebookUser = fake.GetPersonFromFacebook();
Assert.IsNotNull(fakeFacebookUser );
}
在这种情况下,NCrunch 抱怨 PersonApiHandler.GetPersonFromFacebook 没有代码覆盖。由于这个函数调用了真实的 API,我不能在我的单元测试中使用它。我发现使用 [ExcludeFromCodeCoverage] 属性禁用此警告的唯一方法。这是正确的做法还是有任何其他方法可以清除未覆盖的代码消息?
NCrunch 支持使用 specific inline comments 到 select 一行或多行它应该从覆盖范围中忽略的代码。您可以使用//ncrunch: no coverage start
和//ncrunch: no coverage end
来标记代码块的开始和结束,或者使用//ncrunch: no coverage
来忽略单行代码。