Java 通过在私有方法内传递文件路径字符串和IOException处理进行Junit测试
我有一个从main()方法调用的私有方法,我将输入文件路径作为参数传递给该方法。我的测试代码是main()方法。在私有方法中间的某个地方,读取文件并执行某些操作。 我怎样才能: 1。将字符串类型的文件路径(“src/test/resources/test.txt”)作为参数传递。如果传递文件路径,我将获得FileNotFoundException 2。如何在找不到文件时测试私有方法处理的IOException? 在此处添加我的代码片段: 测试中的代码:Java 通过在私有方法内传递文件路径字符串和IOException处理进行Junit测试,java,unit-testing,junit,junit4,junit5,Java,Unit Testing,Junit,Junit4,Junit5,我有一个从main()方法调用的私有方法,我将输入文件路径作为参数传递给该方法。我的测试代码是main()方法。在私有方法中间的某个地方,读取文件并执行某些操作。 我怎样才能: 1。将字符串类型的文件路径(“src/test/resources/test.txt”)作为参数传递。如果传递文件路径,我将获得FileNotFoundException 2。如何在找不到文件时测试私有方法处理的IOException? 在此处添加我的代码片段: 测试中的代码: 公共类MyApp{ 公共静态void ma
公共类MyApp{
公共静态void main(字符串[]args){
新建MyApp().readFile(args);
}
私有void readFile(字符串[]args){
如果(args!=null){
字符串文件=args[0];
try(BufferedReader br=new BufferedReader(new FileReader(file))){
弦线;
而((line=br.readLine())!=null){
系统输出打印项次(行);
//这里有更多用于处理该行的业务逻辑
}
}捕获(ioe异常ioe){
ioe.printStackTrace();
}
}
}
}
主管道的测试:
@测试
无效测试(){
字符串[]args={“/test_input.txt”};
MyApp.main(args);
assertNotNull();
}
要获取文件路径,您可以在不需要检查
main
方法的任何断言。
如果测试用例成功完成,那么它就通过了。感谢您提出的疑问!首先,您需要更改应用程序代码,因为您正在从args[0]位置读取单个文件,然后才需要读取字符串数组[文件数组或文件集合] 1] 在项目中创建“资源”文件夹: 右键单击project并创建一个名为“resources”的文件夹 2] 在“资源”文件夹中创建“test.txt” 3] 修改代码:
package com.application;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class MyApp {
public static void main(String[] args) {
new MyApp().readFile("resources/Test.txt");
}
private void readFile(String fileName) {
if (fileName != null) {
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
// More business logic here for processing that line
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
在这里,您可以将文件名直接传递给该方法。我希望它能帮助您解决第一个问题。请添加一个示例,其中包含您正在测试的代码和您目前编写的测试,以便社区能够帮助您。添加了代码片段