java集成测试_基于TestNG+Mockito及自动装配注解的Spring MVC集成测试

本文主要总结自己近期在项目中对MVC集成测试的实践及理解,因为先前对这块未实践过。主要参考了官方文档《11.3.6

Spring MVC Test Framework》这一章节内容,涉及到Spring

TestContext Framework、TestNG和Mockito这3个测试框架,完全基于Spring自动装配注解(@Autowired)实现,不需要定义额外的setter或构造器来注入bean,也不需要通过Mockito的@Mock和MockitoAnnotations.initMocks(this)代码方式实现实例化,而是通过静态工厂方法Mockito.mock(...)在XML中实现bean实例初始化。

废话不多说了,看一下需要几步就能搞定MVC Controller与Service层的集成测试。(如果你现在也正好使用Spring

Test框架,可以看看下面对TestNG基类封装的代码,我觉得自己写得还可以。小小赞美一下啦~)

1. 定义底层Service接口及实现

Java代码 a4c26d1e5885305701be709a3d33442f.png

public interface UserService {

User getUserInfo(long id);

int updateUserInfo(User user);

}

Java代码 a4c26d1e5885305701be709a3d33442f.png

public interface UserQueryService {

String getUserName(long userId);

int updateUserName(long userId, String userName);

}

Java代码 a4c26d1e5885305701be709a3d33442f.png

@Service

public class UserQueryServiceImpl implements UserQueryService {

@Autowired

private UserService userService;

@Override

public String getUserName(long userId) {

User user = this.userService.getUserInfo(userId);

return user != null ? user.getName() : "";

}

@Override

public int updateUserName(long userId, String userName) {

User user = new User(userId, userName);

int udpateResult = this.userService.updateUserInfo(user);

return udpateResult;

}

}

2. 为 Controller 层的每一接口定义一对

Request与Response(可重用的,就别多定义啦!~\(≧▽≦)/~)

Java代码 a4c26d1e5885305701be709a3d33442f.png

@JsonIgnoreProperties(ignoreUnknown = true) // 忽略多传的参数

public class BaseRequest {

}

Java代码 a4c26d1e5885305701be709a3d33442f.png

public class UserIDRequest extends BaseRequest {

@JsonProperty("id")

@NotNull(message = "id param is null")

@Min(value = 1, message = "id param must be great or equal than \\{ {value}\\}") // 4.3. Message interpolation -《JSR 303: Bean Validation》

p

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestNG是一个基于Java的测试框架,它支持各种类型的测试,包括单元测试、集成测试和端到端测试。Mocking是一种测试技术,用于模拟(mock)依赖项的行为,以便更方便地进行单元测试。 在使用TestNG和Mocking时,你可以使用Mockito这样的Mocking框架来创建和管理模拟对象。Mockito是一个流行的Java Mocking框架,它可以帮助你创建和配置模拟对象,并对其进行验证。 以下是使用TestNGMockito进行测试的一些步骤: 1. 导入TestNGMockito的相关依赖库。 2. 创建测试类,并使用@Test注解标记测试方法。 3. 在测试方法中,使用Mockito的Mock注解Mockito.mock方法创建模拟对象。 4. 使用Mockito的when方法设置模拟对象的行为,例如当某个方法被调用时返回一个特定的值。 5. 执行测试方法,并使用Assert断言来验证预期的行为和结果。 下面是一个简单的示例代码,演示了如何在TestNG中使用Mockito进行模拟对象的测试: ```java import org.mockito.Mock; import org.mockito.Mockito; import org.testng.Assert; import org.testng.annotations.Test; public class ExampleTest { @Mock private SomeDependency dependency; @Test public void testSomething() { // 设置模拟对象的行为 Mockito.when(dependency.someMethod()).thenReturn("mocked value"); // 执行被测试的方法 Example example = new Example(dependency); String result = example.doSomething(); // 验证预期的行为和结果 Assert.assertEquals(result, "expected value"); Mockito.verify(dependency).someMethod(); } } ``` 在上面的示例中,我们通过使用Mockito的Mock注解创建了一个模拟对象dependency,并使用when方法设置了它的行为。然后,我们创建了一个Example对象,并调用了它的doSomething方法。最后,我们使用Assert断言验证了预期的结果,并使用Mockito的verify方法验证了模拟对象的某个方法是否被调用。 这只是一个简单的示例,你可以根据具体的需求和情况在TestNGMockito中进行更复杂的测试和模拟。希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值