私は以下のようにうまくいくキュウリのシナリオから文字列のリストを渡す必要があります
Scenario Outline: Verify some scenario
Given something
When user do something
Then user should have some "<data>"
Examples: Some example
|data|
|Test1, Test2, Test3, Test4|
ステップ定義では、Listを使用して変数の値を取得します。ただし、データ変数の値の1つにカンマ(、)が含まれている場合Tes、t4は「Tes」と「t4」を2つの異なる値と見なすため、複雑になります
Examples: Some example
|something|
|Test1, Test2, Test3, Tes,t4|
だから私が使用できるエスケープ文字はありますか、この状況を処理する他の方法があります
これはあなたのために働くはずです:
Scenario: Verify some scenario
Given something
When user do something
Then user should have following
| Test1 |
| Test2 |
| Test3 |
| Tes,t4|
ステップ定義で
Then("^user should have following$")
public void user_should_have_following(List<String> testData) throws Throwable {
#TODO user your test data as desired
}
シナリオにデータを入れないでください。あなたはそれからほとんど利益を得ず、それは多くの問題を生み出します。代わりに、データに名前を付け、シナリオのThenで名前を使用します
例えば.
Then the user should see something
シナリオにデータと例を入れることはほとんど無意味です。以下が適用されます
TypeRegistryConfigurerのTransformerでは、これを行うことができます
@Override
public Object transform(String s, Type type) {
if(StringUtils.isNotEmpty(s) && s.startsWith("[")){
s = s.subSequence(1, s.length() - 1).toString();
return Arrays.array(s.split(","));
}
return objectMapper.convertValue(s, objectMapper.constructType(type));
}