Java 通过在私有方法内传递文件路径字符串和IOException处理进行Junit测试

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

我有一个从main()方法调用的私有方法,我将输入文件路径作为参数传递给该方法。我的测试代码是main()方法。在私有方法中间的某个地方,读取文件并执行某些操作。 我怎样才能:

1。将字符串类型的文件路径(“src/test/resources/test.txt”)作为参数传递。如果传递文件路径,我将获得FileNotFoundException

2。如何在找不到文件时测试私有方法处理的IOException?

在此处添加我的代码片段:

测试中的代码:

公共类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();
            }
        }
    }
}

在这里,您可以将文件名直接传递给该方法。我希望它能帮助您解决第一个问题。

请添加一个示例,其中包含您正在测试的代码和您目前编写的测试,以便社区能够帮助您。添加了代码片段