为什么要求对业务实现进行Unit Test?请移步这里Java中几种Unit Test场景
有一段业务逻辑是提供以下功能:
如果productId是“ABC”,countryCode是“US”,则返回Product对象;
否则抛出NotFoundException("Not Found");
ProductService
@Service
public class ProductService {
public ProductDTO query(String productId, String countryCode) throws NotFoundException {
if ("ABC".equals(productId) && "US".equals(countryCode)) {
return new ProductDTO("ABC", "US", "Super ABC");
}
throw new NotFoundException("Not found");
}
}
测试
1,当调用某段业务代码后,有没有返回预期的的想要的结果:
should_return_product_dto_when_product_id_is_ABC_and_country_code_is_US();
2,当业务代码传入一些非法数据是,业务代码是否返回了期望的结果
should_throw_NotFoundException_when_product_id_is_empty_and_country_code_is_empty();
@RunWith(MockitoJUnitRunner.class)
public class ProductServiceTest {
@InjectMocks
private ProductService productService;
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void should_return_product_dto_when_product_id_is_ABC_and_country_code_is_US() throws NotFoundException {
ProductDTO productDTO = productService.query("ABC", "US");
assertThat(productDTO.getName(), is("ABC"));
assertThat(productDTO.getCountryCode(), is("US"));
assertThat(productDTO.getDescription(), is("Super ABC"));
}
@Test
public void should_throw_NotFoundException_when_product_id_is_empty_and_country_code_is_empty() throws NotFoundException {
thrown.expect(NotFoundException.class);
thrown.expectMessage("Not found");
productService.query("", "");
}
}
网友评论