行为驱动开发(BDD)

行为驱动的开发是一种敏捷的软件开发过程, 它支持软件项目中的开发人员, 质量分析师和业务成员之间的协作。它是从测试驱动开发(TDD)软件开发的。
BDD是TDD的一般技术和原理与源自域驱动设计(DDD)和面向对象的分析与设计(OOAD)方法的思想的结合。
Mockito使用org.mockito包中提供的BDDMockito类。它开发了BDD风格的测试。 BDD编写文本的样式////然后将注释作为测试正文的主要部分。它使用给定(..)willReturn(..)方法代替when(..)thenReturn(..)方法。
以下是BDDMockito类的一些重要方法:

方法和方法类型 描述
< T> 给定(T methodCall) 它与when(TmethodCall)方法非常相似。它启用存根。
< T> 然后(T模拟) 它启用了模拟行为的BDD样式验证。
BDDStubber将(回答< ?> 回答) 它类似于doAnswer(Answer answer)方法。当我们想使用通用Answer来对void方法进行存根时, 可以使用它。
BDDStubber willReturn(Object toBeReturned) 它类似于doReturn(Object toBeReturned)方法。它代替了when(Object)。
BDDStubber willThrow(Class < ?extended Throwable> toBeThrown) 它类似于doThrow(Class < ?extended Throwable> toBeThrown)方法。当我们想对一个带异常的void方法进行存根时使用它。
以下代码片段显示了如何使用BDD样式测试:
//givengiven(seller.askMilk ()).willReturn(new Milk()); //whenGoods goods = shop.buyMilk (); //thenassertThat(goods, containMilk ());

在上面的代码片段中, 我们使用了assertThat()方法而不是assertEquals()方法。如果通过静态导入引用代码, 则使代码更易于阅读和理解。
BDD样式示例
在这里, 我们将创建一个BDD样式测试的示例。切换到BDD样式仅在测试语法上有微小差异。它将测试语法分为三个部分:给定, 何时和然后使代码更具可读性。
  • 给出:我们可以使用设置部分和给定的语法。
  • 时间:我们可以进行测试的实际调用。
  • 然后:我们可以使用诸如assertThat()之类的可读断言, 还可以检查后置条件是否得到满足。
让我们通过创建一个示例来了解BBD样式测试。
TestList.java
import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.*; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.List; import org.junit.Test; import org.mockito.Mockito; public class TestList {@Test public void testList_usingBDD() {//Given - setup partList< String> mocklist = mock(List.class); given(mocklist.get(Mockito.anyInt())).willReturn("Mockito"); //When - invocation String string1 = mocklist.get(0); //Then - readable assertassertThat(string1, is("Mockito")); }}

输出如下
【行为驱动开发(BDD)】以下输出显示使用BDD样式测试已成功运行。
行为驱动开发(BDD)

文章图片

    推荐阅读