プロジェクトには、古い柑橘類の xml テストケースとテンプレートがたくさんあります。新しいバージョンにアップグレードした後、Java DSL に切り替えることにしました。古いテンプレートを使い続けることはできますか?そうしようとすると、「..という名前のBeanが定義されていません」という例外が発生します。
@ImportResource を介してテンプレート ファイルをインポートしようとしましたが、成功しませんでした。
プロジェクトには、古い柑橘類の xml テストケースとテンプレートがたくさんあります。新しいバージョンにアップグレードした後、Java DSL に切り替えることにしました。古いテンプレートを使い続けることはできますか?そうしようとすると、「..という名前のBeanが定義されていません」という例外が発生します。
@ImportResource を介してテンプレート ファイルをインポートしようとしましたが、成功しませんでした。
テンプレートをロードし、現在のテスト コンテキストで実行する簡単なカスタム テスト アクションを作成できます。
次のテンプレートが与えられた場合templates/hello-template.xml
<spring:beans xmlns="http://www.citrusframework.org/schema/testcase"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.citrusframework.org/schema/testcase http://www.citrusframework.org/schema/testcase/citrus-testcase.xsd">
<template name="helloTemplate">
<echo>
<message>Hello ${user}</message>
</echo>
</template>
</spring:beans>
そのテンプレートをロードするためのカスタム テスト アクションを作成できます。
public class TemplateTest extends TestNGCitrusTestRunner {
@Test
@CitrusTest
public void test() {
run(new CallTemplateAction("templates/hello-template.xml", "helloTemplate"));
}
private class CallTemplateAction extends AbstractTestAction {
private final String templateName;
private final String templateLocation;
public CallTemplateAction(String templateLocation, String templateName) {
this.templateLocation = templateLocation;
this.templateName = templateName;
}
@Override
public void doExecute(TestContext testContext) {
Template template = new ClassPathXmlApplicationContext(new String[] { templateLocation },
testContext.getApplicationContext())
.getBean(templateName, Template.class);
template.getParameter().put("user", "foo");
template.execute(testContext);
}
}
}
アクションが完了したら、おそらくテンプレート インスタンスをキャッシュするか、アプリケーション コンテキストを閉じる必要があります。