gpt4 book ai didi

java - 系统规则返回不同的行分隔符

转载 作者:行者123 更新时间:2023-11-30 08:15:12 24 4
gpt4 key购买 nike

我有一个来自 Spring in Action 4th 的 spring 测试类,它测试将某些内容打印到标准输出的简单类。它使用合并到 junit 中的 System-Rules 库。

当我运行测试时它抛出 ComparisionException - 唯一的区别是行分隔符。最终,我设法通过从 System.properties 中获取行分隔符来绕过它。

是否可以通过某种方式配置系统规则使其自动生成?我正在使用 Windows 7 专业版。

测试

import static org.junit.Assert.*;

import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.StandardOutputStreamLog;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:META-INF/spring/soundsystem.xml")
public class CDPlayerXMLConfigTest {

private String newLine = System.getProperty("line.separator");//This will retrieve line separator dependent on OS.

@Rule
public final StandardOutputStreamLog log = new StandardOutputStreamLog();

@Autowired
private MediaPlayer player;

@Autowired
private CompactDisc cd;

@Test
public void cdShouldNotBeNull() {
assertNotNull(cd);
}

@Test // Won't pass
public void play() {
player.play();
assertEquals("Playing Sgt. Pepper's Lonely Hearts Club Band by The Beatles\n", log.getLog());
}

@Test //Will pass
public void play2() {
player.play();
assertEquals("Playing Sgt. Pepper's Lonely Hearts Club Band by The Beatles" + newLine, log.getLog());
}
}

测试类

@Component
public class SgtPeppers implements CompactDisc {

private String title = "Sgt. Pepper's Lonely Hearts Club Band";
private String artist = "The Beatles";

public void play() {
System.out.println("Playing " + title + " by " + artist);
}

}

最佳答案

系统规则只返回写入System.out 的内容。我向 System Rules 1.12.0 添加了一个新方法 log.getLogWithNormalizedLineSeparator()那解决了你的问题。 (您必须使用新规则 SystemOutRule 而不是 StandardOutputStreamLog。)

关于java - 系统规则返回不同的行分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29046895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com