0

セキュリティトークンを生成する1つのRESTエンドポイントを呼び出してから、テスト対象の実際のシステムに1秒をかけるテストが必要です。これを行うために、smartrics.rest.fitnesse.fixture.RestFixtureを使用し、インスタンス化でbaseurlを最初のベースに設定しています。この呼び出しを行ってから、新しいbaseurlを新しい場所に設定しようとしていますが、問題が発生しています。

コードを熟読すると、setBaseUrl(Url url)メソッドがあるように見えますが、これを使用した例が見つからず、自分で理解しようとして失敗しています。

誰かがこれで運があったか、これを達成するための別のより良い/より簡単な方法がありますか?

4

2 に答える 2

1

問題はRestFixture:processRowにあります-Javaリフレクションを使用するため、パラメーターなしでメソッドを呼び出そうとします。setBaseUrlは1つの引数(Url)を受け入れるため、これは失敗します。私はそれを達成するための最良の方法ではありませんが、1つの変更を試みました-現在のコードRestFixture v3.0(RestFixture.processRow()):

method1 = getClass().getMethod(methodName);
method1.invoke(this);

RestFixture.processRow()の変更されたコード:

Method[] methods = getClass().getMethods();

int i = 0;
for(i = 0; i < methods.length; i++){
    if(methodName.equals(methods[i].getName())){
        method1 = methods[i];
        break;
    }
}

Class[] paramTypes = method1.getParameterTypes();

List<Object> params = new ArrayList<Object>();

for(i = 0; i < paramTypes.length; i++){
    String cellText = row.getCell(i+1).text();
    Object param = paramTypes[i].getConstructor(String.class).newInstance(cellText);
    params.add(param);
}

method1.invoke(this, params.toArray());

この変更が完了したら(必要なインポート(java.lang.InstantiationException、java.lang.Object、java.util.ArrayList、およびInstantiationExceptionの例外ハンドラー)を追加する必要がある場合があります)、RestFixtureを再構築すると機能します。

于 2014-01-30T15:22:52.617 に答える
1

同様の要件のように聞こえますが、RestFixture(POST)を使用して、後続のRestFixture呼び出し(GET)で使用するURLを取得する必要がありました。(古いRestFixture 1.1を使用していることに注意してください)

RestFixture.javaのprocessArguments()メソッドを次のように変更しました。

// baseUrl = new Url(args[0]); // original line baseUrl = new Url(resolve(args[0])); // modified

この変更を行うと、Fitnessテストは次のようになります。

`!| RestFixture | http:/// fds |
| setBody | {"param1": "blah"、 "param2": "blather"} |
| POST | / GetThatUrl | 200 | | |
| しましょう| $ urlresult | ボディ| |

!| RestFixture | $ urlresult |
| GET | | 200 | コンテンツの長さ:[\ d] + | || `

コードを変更しないと、$ urlresultは解決されず、URLを変数として渡すことができませんでした。

于 2014-03-07T00:24:56.343 に答える