擅长:python、mysql、java
<p>我的方法是:</p>
<ul>
<li>创建<code>Mammal</code>的最小可测试子类,该子类提供两个受保护方法的最小实现,允许您对公共方法的行为进行单元测试。</li>
<li>为每个子类编写单独的单元测试,这些子类再次在<code>Mammal</code>上测试公共方法,但断言特定于该子类的行为。</li>
</ul>
<p>这将为您提供必要的测试覆盖率和最少的测试数量。</p>
<p>另一种方法是只测试子类,并且在其中一个子类单元测试中还断言特定于<code>Mammal</code>的特性。这避免了创建特定测试子类的需要,但是有两个缺点:</p>
<ul>
<li>您不再孤立地测试<code>Mammal</code>,因此对<code>Mammal</code>特定代码的测试很容易因为子类中的问题而失败。</li>
<li>其他人可能不太清楚<code>Mammal</code>的属性是如何测试的,以及在哪里测试的。</li>
</ul>