为需要文件位置的方法编写单元测试
Write unit test for a method which need a file location
我有一个将文件位置作为参数的方法。
public void methodA(String fileLocation){
// Do something
methodB(fileLocation);
}
private void methodB(String fileLocation){
readFile();
// Do Something
}
我想为methodA()
写一些单元测试。文件位置是 YAML 文件的位置,我需要为各种类型的 YAML 文件编写单元测试。由于 methodA
获取文件路径作为参数,因此我无法将 YAML 文件作为字符串传递。此外,由于 methofB
是私有的,我无法直接为 methodB
.
编写单元测试
- 这里破解了什么软件工程师负责人?
- 如何重构此代码,因为我可以像上面那样编写单元测试。
一开始我的计划是更新 methodB
,因为它将 YAML 字符串作为参数并使其成为 public。但是我不确定将完整的 YAML 字符串作为参数传递给方法是否是一个好习惯,因为对 methodB
.
的调用很多
为什么要将 YAML 文件作为字符串传递?只需将测试文件上传到您的资源目录,并使用它们来测试您的逻辑。其次,对于方法 B,我个人会使用 PowerMock 的能力来执行私有方法,这里有一个简单的指南 - https://www.baeldung.com/powermock-private-method。一般来说,仅仅为了测试而改变方法的可见性是一种不好的做法,即如果没有必要,不要制作 methodB public。
我有一个将文件位置作为参数的方法。
public void methodA(String fileLocation){
// Do something
methodB(fileLocation);
}
private void methodB(String fileLocation){
readFile();
// Do Something
}
我想为methodA()
写一些单元测试。文件位置是 YAML 文件的位置,我需要为各种类型的 YAML 文件编写单元测试。由于 methodA
获取文件路径作为参数,因此我无法将 YAML 文件作为字符串传递。此外,由于 methofB
是私有的,我无法直接为 methodB
.
- 这里破解了什么软件工程师负责人?
- 如何重构此代码,因为我可以像上面那样编写单元测试。
一开始我的计划是更新 methodB
,因为它将 YAML 字符串作为参数并使其成为 public。但是我不确定将完整的 YAML 字符串作为参数传递给方法是否是一个好习惯,因为对 methodB
.
为什么要将 YAML 文件作为字符串传递?只需将测试文件上传到您的资源目录,并使用它们来测试您的逻辑。其次,对于方法 B,我个人会使用 PowerMock 的能力来执行私有方法,这里有一个简单的指南 - https://www.baeldung.com/powermock-private-method。一般来说,仅仅为了测试而改变方法的可见性是一种不好的做法,即如果没有必要,不要制作 methodB public。