2 回答

TA贡献1874条经验 获得超12个赞
假设你画圣诞树的班级看起来或多或少像这样:
class ChristmasTreeDrafter {
void draw() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 10 - i; j++)
System.out.print(" ");
for (int k = 0; k < (2 * i + 1); k++)
System.out.print("*");
System.out.println();
}
}
}
你可以这样测试它:
public class ChristmasTreeDrafterTest {
private final ByteArrayOutputStream out = new ByteArrayOutputStream();
@Before
public void setup() {
System.setOut(new PrintStream(out));
}
@Test
public void shouldDrawChristmasTree() {
// given
ChristmasTreeDrafter christmasTreeDrafter = new ChristmasTreeDrafter();
// when
christmasTreeDrafter.draw();
// then
Assert.assertEquals(" *\r\n" +
" ***\r\n" +
" *****\r\n" +
" *******\r\n", out.toString());
}
}
在setup方法中,标准输出流被重定向到out对象,因此您可以在then块中验证其内容。不幸的是 Java 没有多行字符串,所以这段代码看起来很难看。为了提高可读性,您可以将此内容提取到文件中test/resources(假设默认的 maven 项目结构)。
添加回答
举报