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

使用Mockito初始化对象

康照
2023-03-14

我在使用Mockito进行单元测试初始化对象时遇到了一些困难

这是我的测试代码

@RunWith(SpringJUnit4ClassRunner.class)
class AreaControllerTest {

  @Mock
  CalculateArea calculateArea;

  @InjectMocks
  AreaController areaController;

  MockMvc mockMvc;

  @Before
  public void init()
  {

    mockMvc = standaloneSetup(areaController).build();
  }
  @Test
  void calculateArea() throws Exception{

    Mockito
        .when(calculateArea.calculateArea(Type.RECTANGLE, 5.0d, 4.0d))
        .thenReturn(20d);
    mockMvc.perform(
        MockMvcRequestBuilders.get("/api/area?type=RECTANGLE&param1=5&param2=4")
    )
    .andExpect(status().isOk())
    .andExpect(content().string("20.0"));

  }
}

要测试的代码

@Component
public class CalculateArea {

    @Autowired
    SquareService squareService;

    @Autowired
    RectangleService rectangleService;

    @Autowired
    CircleService circleService;

    public Double calculateArea(Type type, Double... r )
    {
        switch (type)
        {
            case RECTANGLE:
              if (r.length >= 2) {
                return rectangleService.area(r[0], r[1]);
              } else {
                throw new RuntimeException("Missing required params");
              }
            case SQUARE:
              if (r.length >= 1) {
                return squareService.area(r[0]);
              } else {
                throw new RuntimeException("Missing required param");
              }

            case CIRCLE:
              if (r.length >= 1) {
                return circleService.area(r[0]);
              } else {
                throw new RuntimeException("Missing required param");
              }
            default:
                throw new RuntimeException("Operation not supported");
        }
    }
}

RecTangleService、CircleService和SquareService用注释org.springframework.stereotype.Service注释我尝试了很多选项,最终得出结论。我没有得到我错在哪里。我试着在网上搜索了很多地方,但找不到任何帮助。

共有1个答案

越开畅
2023-03-14

我认为你需要换一个跑步者。考虑到您使用的是SpringJUnit4ClassRunner,看起来您使用的是JUnit4。您应该能够简单地替换

@RunWith(SpringJUnit4ClassRunner.class)

@RunWith(MockitoJUnitRunner.class)
 类似资料:
  • 有许多方法可以使用mockito初始化模拟对象。其中什么是最好的方法? 1. 建议我有没有比这些更好的方法...

  • 问题内容: 有很多方法可以使用MockIto初始化模拟对象。其中最好的方法是什么? 1。 2。 [编辑] 3。 如果有其他方法可以建议我… 问题答案: 对于模拟初始化,使用或是严格等效的解决方案。从MockitoJUnitRunner的javadoc中: 当你已经在测试用例上配置了特定的运行器时,可以使用第一个解决方案(带有)。 第二个解决方案(带有)更经典,也是我的最爱。代码更简单。使用转轮提供

  • 我预计Spring会通过将属性“property.key”设置为“property_value”来初始化StorageConfiguration对象。 但是,我得到以下异常 org.springframework.beans.factory.beanCreationException:创建类路径资源[applicationContext.xml]中定义的名为“storage”的bean时出错:在设

  • 我想使用“=”符号初始化MyClass的对象。 例如。字符串a=“你好”; 我想做 这是我用构造函数写的类

  • 问题: 我正在为我的一个spring批处理作业方法编写单元测试。我使用mockito来模拟我的批处理作业依赖关系。在jobExecution发挥作用之前,一切都很好。我要测试的方法调用了jobExecution变量,但它给了我NPE(NullPointerException)并且我没有成功地用mockito模拟它。 删除此currentJobExecution时 从我要测试的方法,然后测试成功完成