2016-02-19 65 views
1

我有一个C#实体框架项目与数据,数据访问和服务组件。配置管理员已启用代码覆盖率(Sonarqube),目前显示数据和数据访问组件的覆盖率为0%。 1)尽管为Service组件的类方法编写的MSTest单元测试代码正在执行类似于 - > Student s = new Student()(学生是Data组件中的公共类),我认为它不会被计入作为数据组件的覆盖线?我证实,即使编写虚拟测试来检查是否在新的测试方法中调用构造函数,仍然会将无逻辑数据类Student标记为未覆盖。这是预期的吗?单元测试覆盖需要考虑什么?

2)实体框架数据组件实际上没有业务逻辑,因为它只有流利的api配置类,存储库和工作单元类,它们自己不执行任何逻辑并依赖于基本实现。对我来说很明显,我们也不能单元测试数据访问组件。

有了上述要点,我是否可以正确地要求配置组排除参与代码覆盖度量的数据和访问组件?

回答

0

我不能说你提到的技术,尤其是考虑到你没有提及代码的写法。我的经验是Java,Objective-C和Swift。

根据我的经验,获得80%以上的代码覆盖率并不难。特别是如果你可以应用一个好的模拟框架来协助你的测试用例。

如果你的测试覆盖率工具告诉你,即使执行了一个构造函数,你的覆盖率为0%,那么我会建议其中的一个。无论是涉及的类都没有被覆盖工具检测到,因此没有跟踪执行情况,或者该工具没有给您带来好的结果。

第一个问题可以通过确保所有类都正确插装来解决。第二个问题可以通过放弃您的覆盖工具并获得更好的解决方案来解决。

忽视课程是虚假的经济。这就像声称你已经完成了房子的吸尘,因为你排除了本周没有使用的房间。你还没有真正完成,那些房间仍然需要一个真空。

0
The rule in TDD is "Test everything that could possibly break" Can a getter break? Generally not, so I don't bother to test it. Besides, the code I do test will certainly call the getter so it will be tested. 

Junit test for POJO - >此链接描述POJO是否被测试!

基本规则,所有要在代码库中测试的东西。但是,POJO和自动生成的代码库会有例外。

在这种情况下,这取决于接受报告的团队。使用Exclude from Sonar链接,我们可以排除模块。

1. I presume it won't be accounted for as a covered line for Data component? 

取决于记录报告的团队。如何有开放的库来检查这些。 Pojo testing library

2. The Entity framework data component has virtually no business logic... 

在单元测试中没有点在没有业务逻辑。在这种情况下,请使用这些方法从声纳中跳过。 PS:因为它没有提到你使用的语言,所以它对Java通用 - 声纳 - Maven环境。

相关问题