1

我想测试以下方法,特别是调用了 write 和 close 方法(在写检查的情况下,所写的是我所期望的)。真正的源代码是 Java,我正在用 Groovy 编写测试。我不能使用地图强制,因为没有默认构造函数。我尝试了 mockFor 和 metaClass,但只有当我将源代码更改为 groovy 并在 groovy 中进行单元测试时,我才能让它们工作。我有任何常规选项来测试此代码吗?下面的代码是 groovy,但 java 方法源非常相似。生成一个真正的标头,执行一些日期逻辑,然后写入结果。

class TestWriter {
    protected void writeResultToXMLFile(String response,FileWriter fw, Date today){
        String header = "header";
        try{
            fw.write(header);
            fw.close();
        } catch (IOException ioe){
            String errorMessage = "Unable to write to file";
            try{
                fw.close();
            }catch (IOException ioException){
                errorMessage += ", Error attempting to close the file";
            }
        }
    }
}
4

2 回答 2

4

将您的代码类 FileWriter 替换为 Writer 接口,然后您将能够为 writer 创建一个模拟实现并测试它是否接收所有需要的调用

于 2012-08-22T07:12:09.820 回答
2

另一种可能性是使用像Mockito这样的框架来模拟FileWriter,然后verify传递正确的值。

它看起来像这样:

// create the mock
FileWriter mock = mock(FileWriter.class);

// call the method under test and pass in the mock 

// verify the intended behaviour
verify(mock).write("the expected text");
verify(mock).close();

希望这可以帮助。

于 2012-08-22T07:44:19.443 回答