个性化阅读
专注于IT技术分析

行为驱动开发(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样式测试:

//given
   given(seller.askMilk ()).willReturn(new Milk());

   //when
   Goods goods = shop.buyMilk ();

   //then
   assertThat(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 part

   	  List<String> mocklist = mock(List.class);
	  given(mocklist.get(Mockito.anyInt())).willReturn("Mockito");
	  
	  //When - invocation 
	  String string1 = mocklist.get(0);
	  
	  //Then - readable assert
	  assertThat(string1, is("Mockito"));
	 }
  }

输出如下

以下输出显示使用BDD样式测试已成功运行。

行为驱动的发展

赞(0) 打赏
未经允许不得转载:srcmini » 行为驱动开发(BDD)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏