我如何在Java中对主要方法进行单元测试

问题描述 投票:-2回答:1

这是我的具有主要功能的课程。在这里,我初始化了一个有骆驼路线的春豆。我不想测试此代码中引用的任何其他类,但我只想创建此主类的代码覆盖范围。我该如何模拟和测试该课程?

import org.apache.camel.main.Main;
public class ABC{
public static void main(String[] args) {

        Main main = new Main();
        MyCamelRoute myCamelRoute = SpringUtil.getBean(MyCamelRoute.class);
        main.addRouteBuilder(myCamelRoute);

        Thread t = new Thread(() -> {
            try {
                main.run();
            } catch (Exception e) {
                _logger.error("Unable to add route", e);
            }
        }, "started route");

        t.start();  
    }
}
java unit-testing mocking mockito powermock
1个回答
0
投票

[当您编写“模拟”时,我想您打算编写单元测试。

ONE:要么测试一个类,要么模拟它。您可以使用模拟使测试独立于其他单元(“被测系统”(SUT)的“依赖项”)的行为(以及可能的错误)。

TWO:

您进行not

编写测试以增加代码覆盖率。您编写测试来执行API合同的要求。

THREE:

要测试您的主要方法:调用它!您可以输入参数,看看返回值是否符合您的期望。

FOUR:

这里的问题可能是您拥有无法控制的静态依赖关系。 Spring允许您配置用于bean注入的模拟。现在无法告诉您详细信息,但我相信您可以找到,它应该类似于@Configuration带注释的类或测试它们的特定版本。但是:您的测试无法控制main对象。真诚的,我想您实际上打算测试Main类。

FIVE

:我不确定在单元测试中包含多线程是否是一个好主意,因为这意味着您的测试无法控制安装环境。如果您不知道测试从哪里开始,则无法确定测试的结束位置是否正确。
© www.soinside.com 2019 - 2024. All rights reserved.