这是我的具有主要功能的课程。在这里,我初始化了一个有骆驼路线的春豆。我不想测试此代码中引用的任何其他类,但我只想创建此主类的代码覆盖范围。我该如何模拟和测试该课程?
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();
}
}
[当您编写“模拟”时,我想您打算编写单元测试。
ONE:要么测试一个类,要么模拟它。您可以使用模拟使测试独立于其他单元(“被测系统”(SUT)的“依赖项”)的行为(以及可能的错误)。 TWO:
THREE:
要测试您的主要方法:调用它!您可以输入参数,看看返回值是否符合您的期望。FOUR:
这里的问题可能是您拥有无法控制的静态依赖关系。 Spring允许您配置用于bean注入的模拟。现在无法告诉您详细信息,但我相信您可以找到,它应该类似于@Configuration
带注释的类或测试它们的特定版本。但是:您的测试无法控制main
对象。真诚的,我想您实际上打算测试Main
类。FIVE
:我不确定在单元测试中包含多线程是否是一个好主意,因为这意味着您的测试无法控制安装环境。如果您不知道测试从哪里开始,则无法确定测试的结束位置是否正确。