java 中黄瓜的单元测试异常场景
Unit testing Exception scenarios with cucumber in java
我正在遵循 BDD 方法并使用 Cucumber 执行单元测试
我有一个 class 如下所示
public class EmployeeServiceImpl {
private static Log log = LogFactory.getlog(EmployeeServiceImpl.class);
@Autowired
private EmployeeDao employeeDao;
public void saveEmployee(Employee emp) throws Exception {
try {
employeeDao.saveemployee(emp);
} catch (Exception ex) {
log.error("Error occured "+ex);
}
}
}
任何人都可以帮我如何为上面的代码片段编写异常场景吗?
我会使用的算法是这样的:
- 准备参数 emp 以便它抛出预期的错误
- 调用方法
- 验证与日志的交互是否发生
我会使用 Mockito 来验证交互,http://site.mockito.org/#how
JUnit 解决方案可能如下所示:
@Test
public void verify_logging() throws Exception {
Log log = mock(Log.class);
Employee emp = new Employee();
saveEmployee(emp);
verify(log, times(1)).error("Error occured");
}
通过三个步骤将其转换为 Cucumber 将如下所示:
private Log log;
private Employee emp;
@Given("prepare employee")
public void given() {
Log log = mock(Log.class);
Employee emp = new Employee();
}
@When("save employee")
public void when() throws Exception {
saveEmployee(emp);
}
@Then("exception should be logged")
public void then() {
verify(log, times(1)).error("Error occured");
}
您的任务是为步骤方法和更好的步骤想出更好的名称。
我正在遵循 BDD 方法并使用 Cucumber 执行单元测试 我有一个 class 如下所示
public class EmployeeServiceImpl {
private static Log log = LogFactory.getlog(EmployeeServiceImpl.class);
@Autowired
private EmployeeDao employeeDao;
public void saveEmployee(Employee emp) throws Exception {
try {
employeeDao.saveemployee(emp);
} catch (Exception ex) {
log.error("Error occured "+ex);
}
}
}
任何人都可以帮我如何为上面的代码片段编写异常场景吗?
我会使用的算法是这样的:
- 准备参数 emp 以便它抛出预期的错误
- 调用方法
- 验证与日志的交互是否发生
我会使用 Mockito 来验证交互,http://site.mockito.org/#how
JUnit 解决方案可能如下所示:
@Test
public void verify_logging() throws Exception {
Log log = mock(Log.class);
Employee emp = new Employee();
saveEmployee(emp);
verify(log, times(1)).error("Error occured");
}
通过三个步骤将其转换为 Cucumber 将如下所示:
private Log log;
private Employee emp;
@Given("prepare employee")
public void given() {
Log log = mock(Log.class);
Employee emp = new Employee();
}
@When("save employee")
public void when() throws Exception {
saveEmployee(emp);
}
@Then("exception should be logged")
public void then() {
verify(log, times(1)).error("Error occured");
}
您的任务是为步骤方法和更好的步骤想出更好的名称。