当前位置: 首页 > 知识库问答 >
问题:

如何在ExchangeTestSupport中使用mockito

米浩穰
2023-03-14

我有如下的骆驼路线

public class MainRouteBuilder extends RouteBuilder {

    @Autowired
    private CcsRouteCommonProperties commonProps;

    /**
     * {@inheritDoc}
     */
    @Override
    public void configure() throws Exception {

    }
}

我已经使用ExchangeTestSupport进行了笔试,如下所示

public class MainRouteBuilderTest extends ExchangeTestSupport {

    /**
     * {@inheritDoc}
     */
    @Override
    public RoutesBuilder createRouteBuilder() throws Exception {

    }

    @Test
    public void shouldProcess() throws Exception {

    }
}

我试图嘲笑CcsRouteCommon Properties类似于下面的@Mock私有CcsRoute公益道具;

如何使用mockito(@RunWith(MockitoJUnitRunner.class))模拟上述字段

共有1个答案

双子民
2023-03-14

您的问题的直接答案是在MainRouteBuilder上使用@InjectMocks,让Mockito注入@Mock@Spyccsroutcommonproperties。我希望这本简短的指南能给你解释一下。

解决方案是这样的

@RunWith(MockitoJUnitRunner.class)
    public class MainRouteBuilderTest extends ExchangeTestSupport {

        @Mock
        CcsRouteCommonProperties commonProps;

        @InjectMocks
        MainRouteBuilder routeBuilder;

        @Override
        public RoutesBuilder createRouteBuilder() throws Exception {
                return routeBuilder;
        }

        @Test
        public void shouldProcess() throws Exception {

                when(commonProps.getSomething()).thenReturn(new Something());
        }
    }

但是,如果我在你的位置上,我会避免使用@autowed魔法,并使用构造函数注入明确说明的依赖关系。

路线生成器

public class MainRouteBuilder extends RouteBuilder {
private CcsRouteCommonProperties commonProps;
    public MainRouteBuilder( CcsRouteCommonProperties commonProps) {
        this.commonProps =  commonProps;
    }
    /**
        * {@inheritDoc}
        */
    @Override
    public void configure() throws Exception {

    }
}

测验

@RunWith(MockitoJUnitRunner.class)
public class MainRouteBuilderTest extends ExchangeTestSupport {

    @Mock
    CcsRouteCommonProperties commonProps;

    @Override
    public RoutesBuilder createRouteBuilder() throws Exception {
            return new MainRouteBuilder(commonProps);
    }

    @Test
    public void shouldProcess() throws Exception {

    }
}
 类似资料:
  • 问题内容: 如何在Mockito和JUnit 5中使用注入? 在JUnit4中,我可以只使用Annotation。在JUnit5中没有注释吗? 问题答案: 有多种使用Mockito的方法-我将一一介绍。 手动地 无论JUnit版本是什么(或测试框架),都可以使用Works手动创建模拟。 基于注释 使用@Mock -annotation和相应的调用 来创建嘲笑的作品无论JUnit版本(或测试框架,对

  • 如何使用Mockito和JUnit 5的注射? 在JUnit4中,我可以只使用注释。JUnit5中没有注释吗?

  • 问题内容: 我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入存储库和库。我的文件如下: 如何在项目中添加OpenCV? 问题答案: 您可以在Android Studio中轻松完成此操作。 请按照以下步骤将Open CV作为库添加到您的项目中。 libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个Ope

  • 我想使用Android Studio开发一个应用程序使用Gradle构建工具。我无法在上插入OpenCV repo和库。我的文件如下所示: 我如何在我的项目中添加OpenCV?

  • 问题内容: 我想对英语句子加标签,并进行一些处理。我想使用openNLP。我已经安装了 当我执行命令时 它提供输出POSTagging Text.txt中的输入 我希望它安装正确吗? 现在如何从Java应用程序内部进行此POStagging?我已将openNLPtools,jwnl,maxent jar添加到项目中,但是如何调用POStagging? 问题答案: 这是我放在一起的一些(旧)示例代码

  • 问题内容: 我必须在GWT入口点使用java.util.Calendar,但是在运行应用程序时出现错误,这是因为GWT无法找到源代码,无论如何我都可以解决此问题。 提前致谢!!! 问题答案: java.util.Calendar不是模拟的类。您可以在此处找到仿真类的列表: http://code.google.com/webtoolkit/doc/latest/RefJreEmulation.ht