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

在同一个类中本地模拟bean

糜宜民
2023-03-14

我有一个TestClass,有两个Testfoo()bar()foo使用原始beanserviceObject,而bar使用mockedBean:所以总是有一个测试失败。有没有办法只模拟我的bean为bar()

@RunWith(SpringRunner.class)
@SpringBootTest
pubic class TestClass{
    
    @MockBean
    private ServiceObject serviceObject;

    @Test
    public void foo(){
    //do smt test with non mocked bean serviceObject
    }
    
    @Test
    public void bar(){
    //do smt with mockedBean
    }
}

共有3个答案

沈子实
2023-03-14

只需使用您需要在任何给定测试中使用的对象。以下是一些示例代码

@RunWith(SpringRunner.class)
@SpringBootTest
pubic class TestClass{
    
    @MockBean
    private ServiceObject mockServiceObject;

    
    @Test
    public void foo(){
        ServiceObject blam = new ServiceObject();
        
        // Use blam in this test
        //do smt test with non mocked bean serviceObject
    }
    
    @Test
    public void bar(){
    //do smt with mockedBean
        // use mockServiceObjec in this test
    }
}
糜雪峰
2023-03-14

我会把测试分成两个不同的类,因为它们显然测试的是完全不同的东西。

一个(foo())可能测试ServiceBean实现的行为,另一个(bar())测试使用ServiceBean实例的东西。

董畅
2023-03-14

我假设您可以在类范围内创建一个Instance,并在方法范围内模拟它。

 类似资料:
  • 我已经为静态方法编写了一些单元测试。静态方法只接受一个参数。参数的类型是final类。在代码方面: 因此,对于类,我创建了一个测试类,其中我为这个方法编写了测试,。单元测试框架是TestNG,使用的模拟库是。因此,典型测试具有以下结构: 有什么问题? 尽管测试在IntelliJ内部成功地在本地运行,但在Jenkins上失败(当我在远程分支中推送代码时,会触发构建,并在最后运行单元测试)。错误消息如

  • 问题内容: 我正在为具有两个方法methodA,methodB的类编写JUnit测试用例。我想在测试用例中模拟对methodA的methodB调用,我正在对正在测试的类使用间谍,但仍然执行methodB。 这是课程 这是测试课 尽管我已对其进行了模拟,但方法B仍会得到调用。请向我建议一个使用正确方法模拟同一类methodA的methodB调用的解决方案。 问题答案: 我昨天碰到这个,因为间谍最好做

  • 问题内容: 我正在尝试在Mock上使用Mockito来执行此操作: 当使用parameter1 调用Mock.someMethod(..)->返回result1 当使用parameter2调用Mock.someMethod(..)时-> return result2 当Mock.someMethod (..)用参数3调用->返回result3 但是Mockito正确地对第一个进行了存根,但是在第二

  • 问题内容: 我有一个名为Java的Java类,我想用JUnit进行测试。我要测试的公共方法调用同一类中的私有方法,以确定要遵循的条件路径。我的目标是为中的不同路径编写JUnit测试。另外,调用服务,因此我不希望在运行JUnit测试时实际执行该服务。 模拟和控制其返回值以便我可以测试“ methodA”的不同路径的最佳方法是什么? 我更喜欢在编写模拟时使用JMockit,因此我对适用于JMockit

  • 我有一个在 ABC 中自动连线的 XYZ 类,在类 MyClass 中我有一个方法名称 doSomething() 在该方法中我做 ABC abc = 新的 ABC();然后我调用 abc.someMethod(); 请参见下面的代码示例: ABC类 类MyCLass 需要单元测试doSomething(),但我NPE在ABC中XYZ为空。在这种情况下,我怎么能模仿@Autowire。

  • 我对JUnit测试和Mockito框架非常陌生,我有一个用例,我想测试一个方法,该方法在内部调用我需要测试的同一类的重载方法。我已经为第一个方法编写了单元测试,希望跳过内部的第二个方法调用。下面是代码片段。 需要测试的类- 测试班-