相关疑难解决方法(0)

我们应该测试控制台输出吗?

我正在使用一些System.out.print本身有一些命令的遗留代码.我的eCobertura插件显示这条线为红色,所以我想对它们进行单元测试.

这里的计算器,我发现了一种单元测试控制台输出这是我的东西是很有趣的.

我是这样做的:

        private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();

        @Before
        public void setUpStreams() {
            System.setOut(new PrintStream(outContent));
        }

        @After
        public void cleanUpStreams() {
            System.setOut(null);
        }

        @Test
        public void out() {
            System.out.print("Some message from the system");
            assertEquals("Some message from the system", outContent.toString());
        }
Run Code Online (Sandbox Code Playgroud)

到目前为止,测试变得很好,但是当我再次运行代码覆盖率插件时,我收到以下消息:

网络"Thread-0"中的异常java.lang.NullPointerException net.sourceforge.cobertura.coveragedata.TouchCollector.applyTouchesOnProjectData(TouchCollector.java:186)at net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData(ProjectData.java:267) )at java.slang.Thread.run(Thread.java:662)的net.sourceforge.cobertura.coveragedata.SaveTimer.run(SaveTimer.java:31)

我有些疑惑:

  • 尝试进行单元测试是否正确System.out.print()'s
  • eCobertura是否与此类测试兼容?
  • 如果eCobertura与此类测试不兼容,为什么它会显示红色线?
  • 我的测试中有什么问题吗?
  • 我正在使用jUnit 4.11你认为这与它有关吗?
  • 为什么eCobertura给我这个错误?

java legacy tdd junit cobertura

5
推荐指数
1
解决办法
4063
查看次数

标签 统计

cobertura ×1

java ×1

junit ×1

legacy ×1

tdd ×1