如何告诉PIT不要改变代码的某些特定部分?

时间:2015-12-18 07:44:05

标签: pitest

有时会出现一些代码或方法,这些代码或方法不会产生任何相关测试会被杀死的突变体。 (例如,我可能正在使用null模式对象,并且一些已实现的方法与prod无关,因此任何实现(甚至抛出)都是正确的。)

能够告诉坑以避免它们(以便突变覆盖范围更相关)会很高兴,但我无法在文档中找到方法。

有办法吗?

1 个答案:

答案 0 :(得分:6)

PIT目前有三种机制可以过滤掉代码。

  1. 按类使用excludedClasses参数
  2. 使用excludedMethods
  3. 的方法
  4. 使用自定义mutation filter
  5. 对于您的用例,它听起来像选项1适合。

    选项2仅允许在所有类中过滤方法(这最常用于防止toString或hashcode方法中的突变)。

    选项3有点涉及,但允许您(例如)过滤掉具有特定注释的方法。

    现在已经请求过几次注释,最终可能会添加主代码库。它的主要问题是概念性问题,因为它要求您在测试问题上污染生产代码。

    一边。

    我没有按照你的空对象模式的例子。

    null对象需要实现接口的所有方法,并且期望它们被调用。如果他们扔掉这将打破这种模式。

    在模式的最常见版本中,方法将为空,因此除了返回值之外没有任何变异。

    这种行为值得用测试来描述。如果您的null对象无法返回任何被认为是中性的值,则会导致问题。