gpt4 book ai didi

java - 如何在不修改现有代码的情况下识别方法执行期间访问或更改的字段?

转载 作者:行者123 更新时间:2023-12-02 10:57:56 24 4
gpt4 key购买 nike

这是出于测试目的。我试图弄清楚在方法执行期间如何识别被访问或修改的字段。这些字段可以是公共(public)的、私有(private)的、来自对象的父类(super class)、父类、外部类等。

例如,我有一些其他人编写的代码,底线是,我不允许修改他们的代码或至少修改其类的现有数据结构。而且他们在大多数字段更改中都没有使用 setter 和 getter。在方法的开头和返回之前添加几行代码可以调用我自己实现的监听器方法。

public class SuperClass{
private String field0;

public String GetAndChangeField0(){
field0 = "changed"; // field changed
return field0;
}
}

public class SubClass extends SuperClass{
public String field1;

public void method1(){
field1 = "changed"; //local field changed
String st = field1; //local field accessed
String st0 = GetAndChangeField0(); //private field from SuperClass changed and accessed
}
}

有什么建议吗?

编辑换句话说,我们想要识别方法执行的隐式/间接输入和输出。

最佳答案

很难说我的建议是否有效,因为这取决于第三方代码的设计方式,并且考虑到您说它没有 getter 或 setter,它可能设计得很糟糕。

尽管如此,这是我最好的镜头,Mockito。您可以创建一个测试套件并尝试识别例如

  • 方法被调用了多少次
  • 参数是什么
  • 是否调用了一个方法,等等

这是一个您可以开始使用它的链接,但是您有很多关于 Mockito 的资源 ( Mockito Tutorial )

关于java - 如何在不修改现有代码的情况下识别方法执行期间访问或更改的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51575164/

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