java - 假客户端单元测试

标签 java unit-testing spring-boot

我想知道在这种情况下编写单元测试的最佳方法是什么:

MyApi:

@RestController
public class MyApi{

    @Autowired
    MyAction myAction;

    @PostMapping
    public ResponseEntity addAction(@ResponseBody MyDto myDto){
        return myAction.addAction(myDto);
    }
}

我的行动:

@Service
public class MyAction{

    @Autowired
    private MyClient myClient;

    public ResponseEntity<AuthenticationResponseDto> login(MyDto myDto{
        return ResponseEntity.ok(myClient.addClient(myDto));
    } 

}

例如,是否必须添加构造函数?

谢谢

最佳答案

使用构造函数注入(inject)被认为是一个很好的做法,但是如果您不想使用它,则需要使用@Mock@InjectMocks。它使用反射,不需要定义构造函数。

@RunWith(MockitoJUnitRunner.class)
public class Test {

    @Mock
    private Client client;

    @InjectMocks
    private ServiceImpl plannerService = new ServiceImpl();

    @Test
    public void test() throws Exception {
        ....
    }
}

关于java - 假客户端单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55956185/

相关文章:

java - 按下按钮时更改 XML 布局

java - 初始化@EJB字段

java - 使用 Spring 客户端浏览 HATEOAS

java - 如何读取用于收集统计信息(后期)处理的输出文件

java - 如何禁用 Java 垃圾收集器?

java - AccessibilityNodeInfo in getRoot ActiveWindow : Perform click fails with Rect() not contains X, Y坐标

java - JUnit 测试 Java 代码断言是否失败

unit-testing - 有没有办法动态设置测试超时值

node.js - vuejs组件单元测试中定义的 'this'变量如何获取

java - 使用 @ControllerAdvice 进行 Spring 异常处理提供了集中控制,但我们必须在方法签名中添加所有抛出异常