猿问

如何在我的简单算法上应用单元测试?

我有一个绘制圣诞树的 Maven 项目。我需要对其实施单元测试,但我不知道该怎么做:/


我已经在我的 Maven 项目中设置了 JUnit


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();

  }


千万里不及你
浏览 121回答 2
2回答

HUWWW

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

SMILET

在高层次上:该代码的目的是打印由星号组成的树或三角形。测试很简单,运行代码并查看它是否生成了所需的输出。由于代码正在打印到 System.out,您需要将 System.out 重定向到一个文件或一个字符串(参见this),然后将生成的输出与所需的输出进行比较,以查看代码是否正常运行。
随时随地看视频慕课网APP

相关分类

Java
我要回答