Java 无参数测试法

Java 无参数测试法,java,file,unit-testing,junit,Java,File,Unit Testing,Junit,这是我第一次在这里发帖,所以我会尽量做到简洁明了 下面我的方法接受0个参数并读取某个文件,查找要回显到控制台的标记: protected static serverVersion() { String output = ""; try { File lsbRelease = new File("/path/randomFile.txt"); BufferedReader br = new BufferedReader(new InputStream

这是我第一次在这里发帖,所以我会尽量做到简洁明了

下面我的方法接受0个参数并读取某个文件,查找要回显到控制台的标记:

protected static serverVersion() {
    String output = "";
    try {
        File lsbRelease = new File("/path/randomFile.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(lsbRelease));
        boolean isMatch = false;
        String line = "";

        // run through file and find the tag
        (...)
该方法有三种不同的可能性:

  • 读取正确的文件,找到标签并回显标签
  • 读取正确的文件,未找到标记,并向用户输出消息
  • 无法读取文件,引发异常
  • 有没有一种方法可以让我编写模拟这三种不同情况的测试?我考虑过使用临时文件夹/文件的规则,但我不知道如何让测试使用我制作的临时文件


    我知道我可以传入一个字符串作为文件路径的参数,然后使用临时文件进行测试,但我希望避免更改原始方法。另外,我希望避免使用另一个框架(即Mockito)。

    依赖注入是您的朋友。将一个“假”文件作为参数传入,并检查它是否在正确的条件下成功或失败。这不需要我更改原始方法吗?在其当前形式中,该方法与实现细节的耦合过于紧密,这使得很难单独进行单元测试。如果目标是模拟,那么就需要进行一些重构。因此建议使用依赖项倒置。不幸的是,您需要更改它。虽然这不是一件坏事。拥有可变代码是很好的。您希望使其可测试,这是朝着正确方向迈出的一步。感谢@BrandonIbbotson的评论。我很可能会这样做,但其他人-请随意给出其他建议!