为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2022-12-15 16:35:39
我有一个绘制圣诞树的 Maven 项目。我需要对其实施单元测试,但我不知道该怎么做:/我已经在我的 Maven 项目中设置了 JUnitfor (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();  }
查看完整描述

2 回答

?
HUWWW

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 项目结构)。


查看完整回答
反对 回复 2022-12-15
?
SMILET

TA贡献1796条经验 获得超4个赞

在高层次上:该代码的目的是打印由星号组成的树或三角形。测试很简单,运行代码并查看它是否生成了所需的输出。

由于代码正在打印到 System.out,您需要将 System.out 重定向到一个文件或一个字符串(参见this),然后将生成的输出与所需的输出进行比较,以查看代码是否正常运行。


查看完整回答
反对 回复 2022-12-15
  • 2 回答
  • 0 关注
  • 60 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信