java - 如何使用 PrintWriter 测试方法?

标签 java csv mockito

我有以下方法:

@Component
public class WriteCsvToResponse {

    private static final Logger LOGGER = LoggerFactory.getLogger(WriteCsvToResponse.class);

    public void writeStatus(PrintWriter writer, Status status) {

        try {

            ColumnPositionMappingStrategy mapStrategy
                = new ColumnPositionMappingStrategy();

            mapStrategy.setType(Status.class);

            String[] columns = new String[]{"id", "storeId", "status"};
            mapStrategy.setColumnMapping(columns);

            StatefulBeanToCsv btcsv = new StatefulBeanToCsvBuilder(writer)
                .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
                .withMappingStrategy(mapStrategy)
                .withSeparator(',')
                .build();

            btcsv.write(status);

        } catch (CsvException ex) {

            LOGGER.error("Error mapping Bean to CSV", ex);
        }
    }

我不知道如何使用 mockito 正确测试它。

使用它将对象状态包装成csv格式。 我使用 StringWriter 将响应包装在其中。 没有更多的细节了,但似乎我必须创建一些词来通过验证:)

最佳答案

你不需要 mockito 来测试这个方法,只需要一个 java.io.StringWriter

下面是如何编写名义用途的测试:

@Test
void status_written_in_csv_format() {
    // Setup
    WriteCsvToResponse objectUnderTest = new WriteCsvToResponse ();
    StringWriter stringWriter = new StringWriter();
    PrintWriter printWriter = new PrintWriter(stringWriter);

    // Given
    Status status = ...

    // When
    objectUnderTest.writeStatus(printWriter, status);

    // Then
    String actualCsv = stringWriter.toString();
    assertThat(actualCsv.split("\n"))
       .as("Produced CSV")
       .containsExactly(
         "id,storeId,status",
         "42,142,OK");
}

这个例子假设了一些关于您的 Status 对象的事情,但是您有大概的想法。 对于断言,我使用 AssertJ ,但您可以使用 JUnit5 内置断言执行相同的操作。

希望对您有所帮助!

关于java - 如何使用 PrintWriter 测试方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274976/

相关文章:

java - 在子接口(interface)中覆盖接口(interface)的一个/多个方法背后的原因是什么?

java - 如何将 Hashmap 数据(可变键/值大小)转储到 Android Studio 中特定内存位置的 .csv 文件中?

java - 未找到 MySQL 驱动程序的未知问题

java - 执行 HTTP GET 请求的 Response 实体的 mockito 单元测试用例

java - java中查找图像相似度的最佳方法

php - 允许用户提取临时数据然后删除表数据( header 保留)?

Excel 和制表符分隔文件问题

android - 如何将从自定义对话框(edittext、datepicker、spinner 等)捕获的数据 bundle 在 .csv 中并附加到 android 中的电子邮件?

android - 如何使用 Mockito 模拟和验证方法中的回调

java - 使用 Spring Boot 模拟配置不会获取属性文件