如何在SpecFlow中添加不同列的Examples?遇参数不一致错误
解决SpecFlow中"example sets must provide the same parameters"错误
错误原因
SpecFlow明确要求:同一个Scenario下的所有Examples块必须包含完全一致的参数列——列名、列数量、顺序都得严格对应。你现在用了两个独立的Examples块,列的内容完全不重合,这直接触发了生成错误。
解决步骤
- 合并所有参数到单个Examples块:把两个
Examples里的所有参数列整合到同一个表格中,确保Scenario里用到的所有<参数>都能在Examples里找到对应列。 - 修正参数引用格式:Examples的列名不要加
<>,只有在Scenario步骤里引用参数时才用<参数名>的格式。 - 对齐参数引用:检查Scenario中所有带
<>的变量,确保和Examples里的列名完全匹配。
修正后的完整代码
Scenario: TradeOrders Given Order 'SellOrder' Has Been Registerd | Side | Price | Amount | IsFillAndKill | ExpireTime | | 0 | 100 | 5 | false | 2024-02-05 09:30:26.2080000 | And Order 'BuyOrder' Has Been Defined | Side | Price | Amount | IsFillAndKill | ExpireTime | | <Buy> | <Price> | <Amount> | <IsFillAndKill> | <ExpireTime> | When I Register The Order 'BuyOrder' Then The following 'Trade' will be created | BuyOrderId | SellOrderId | Amount | Price | | <BuyOrderId> | <SellOrderId> | <TradeAmount> | <TradePrice> | And BuyOrder 'BuyOrder' Should Be Modified like this | Side | Price | Amount | IsFillAndKill | ExpireTime | | 1 | 100 | 0 | false | 2024-02-05 09:30:26.2080000 | Examples: | Buy | Price | Amount | IsFillAndKill | ExpireTime | BuyOrderId | SellOrderId | TradeAmount | TradePrice | | 1 | 100 | 5 | false | 2024-02-05 09:30:26.2080000 | 1 | 2 | 5 | 100 |
关键改动说明
- 删除了第二个独立的
Examples块,将所有参数列合并到同一个表格中 - 修正了原第二个
Examples块的列名(去掉列名中的<>),确保和Scenario里的<BuyOrderId>等引用一一对应 - 确保Scenario中所有动态参数,都能在
Examples表格找到匹配的列
内容的提问来源于stack exchange,提问作者shirin monzavi
相关产品推荐
相关产品推荐

