gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:20:31 27 4
gpt4 key购买 nike

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

能够告诉pit避免它们会很好(这样突变覆盖率更相关),但我在文档中找不到这样做的方法。

有没有办法做到这一点?

最佳答案

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

  • 按类(class)使用 excludedClasses参数
  • 通过使用 excludedMethods 的方法
  • 使用自定义 mutation filter

  • 对于您的用例,听起来选项 1 很合适。

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

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

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

    一边。

    我没有按照您的空对象模式示例。

    一个空对象需要实现一个接口(interface)的所有方法,期望它们 叫做。如果他们抛出这将打破模式。

    在最常见的模式版本中,方法是空的,所以除了返回值之外没有什么可以改变的。

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

    关于pitest - 如何告诉 PIT 不要改变代码的某些特定部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34350684/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com