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");
}

您的任务是为步骤方法和更好的步骤想出更好的名称。