【案例】验收条件
  功能: 下订单
  场景: 用户订单应该正确地记入账户
  假如 存在一种叫做"债券"的金融契据
  而且 存在一个叫"Dave"的用户,他的账户中有50美元
  当   我用"Dave"登录
  当   我选择了"债券"契据
  当   我下订单以10美元的单价购买了4份"债券"
  当   订单已完成
  那么 我的账户中还剩10美元
  【案例】测试实现层
1 using System;
2 using TechTalk.SpecFlow;
3
4 namespace AcceptanceTestExample
5 {
6     [Binding]
7     public class 下订单Steps
8     {
9         private AdminApi adminApi;
10         private TradingUi tradingUi;
11
12         [BeforeScenario]
13         public void 准备工作()
14         {
15             adminApi = new AdminApi();
16             tradingUi = new TradingUi();
17         }
18
19         [Given(@"存在一种叫做""(.*)""的金融契据")]
20         public void 假如存在一种叫做的金融契据(string instrument)
21         {
22             adminApi.CreateInstrument(instrument);
23         }
24
25         [Given(@"存在一个叫""(.*)""的用户,他的账户中有(.*)美元")]
26         public void 假如存在一个叫的用户他的账户中有美元(string user, decimal amount)
27         {
28             adminApi.CreateUser(user, amount);
29         }
30
31         [When(@"我用""(.*)""登录")]
32         public void 当我用登录(string user)
33         {
34             tradingUi.Login(user);
35         }
36
37         [When(@"我选择了""(.*)""契据")]
38         public void 当我选择了契据(string instrument)
39         {
40             tradingUi.SelectInstrument(instrument);
41         }
42
43         [When(@"我下订单以(.*)美元的单价购买了(.*)份""(.*)""")]
44         public void 当我下订单以美元的单价购买了份(decimal amount, int quantity, string instrument)
45         {
46             tradingUi.PlaceOrder(instrument, quantity, amount);
47         }
48
49         [When(@"订单已完成")]
50         public void 当订单已完成()
51         {
52             tradingUi.ConfirmOrderSuccess();
53         }
54
55         [Then(@"我的账户中还剩(.*)美元")]
56         public void 那么我的账户中还剩美元(decimal balance)
57         {
58             tradingUi.ConfirmAccountBalance(balance);
59         }
60     }
61 }
  【案例】应用程序驱动层
1 namespace AcceptanceTestExample
2 {
3     public class AdminApi
4     {
5         //调用业务逻辑
6     }
7 }
8
9 namespace AcceptanceTestExample
10 {
11     public class TradingUi
12     {
13         //使用Selenium.WebDriver操作Web UI
14     }
15 }
  结论:验收测试分为三层。只有应用程序驱动器层知道如何与应用程序打交道,而其他两层只用业务的领域语言。