原則は次のとおりです。
1. Mavenプロジェクトを作成します。
2.各起動で次が実行されるように構成します。
2.1。 リンクによってWSDLサービスの説明がロードされました
2.2。 WSDL記述に基づいて生成されたクライアントコード
2.3。 前の段階で生成されたクラスを含む、チェックに関与するクラスのアサーションコードが生成された
3.テストを作成します。
4.プロジェクトをjenkinsに追加し、テスト自体を実行します。
次のツールが必要です:Java、maven、AssertJ、TestNG。
AssertJは、とりわけ、特定のクラスのイベントを生成できる興味深いフレームワークです。 これにより、次のようなテストを作成できます。
// CheckTextRequest r = new CheckTextRequest(); r.setText(" "); CheckTextResponse resp = port.checkText(r); SpellError sError = resp.getSpellResult().getError().get(0); // c soft.assertThat(sError ) .as(" SpellError") .hasCode(1) .hasCol(24) .hasLen(7) .hasPos(24) .hasRow(0) .hasWord("555") .hasOnlyS(" ");
また、エラーの場合、結果は次のようになります。
The following assertion failed: 1) [ SpellError] Expecting word of: <net.yandex.speller.services.spellservice.SpellError@61ca2dfa> to be: <555> but was: <> at org.assertj.SoftAssertions.assertAll(SoftAssertions.java:32) at ru.x_noname.test.SOAPTest$Listener.afterInvocation(SOAPTest.java:69) ...
私の例では、Yandexパブリックサービスの1つを選択しました-tech.yandex.ru/speller/doc/dg/concepts/api-overview-docpage
続行:
1.次のように、通常の方法でMavenプロジェクトを作成します。
mvn archetype:generate -DgroupId=ru.x_noname.test -DartifactId=SOAPTester -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
2. pom.xmlを編集します。 プラグインを追加します。
生成されたクラスをクリーニングするためのプラグイン
<plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.0.0</version> <configuration> <filesets> <fileset> <directory>${project.basedir}/src/generated</directory> <followSymlinks>false</followSymlinks> </fileset> </filesets> </configuration> </plugin>
WDSLの説明をダウンロードするプラグイン
<plugin> <groupId>com.googlecode.maven-download-plugin</groupId> <artifactId>maven-download-plugin</artifactId> <version>1.1.0</version> <executions> <execution> <id>Download Mayak</id> <goals> <goal>wget</goal> </goals> <phase>validate</phase> <configuration> <url>http://speller.yandex.net/services/spellservice?WSDL</url> <outputDirectory>${project.build.directory}/resources/wsdl</outputDirectory> <outputFileName>spellservice.xml</outputFileName> <skipCache>true</skipCache> </configuration> </execution> </executions> </plugin>
WDSL記述に従ってクライアントコードを生成するためのプラグイン
<plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>3.1.3</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <sourceRoot>${project.basedir}/src/generated</sourceRoot> <wsdlOptions> <wsdlOption> <wsdl>${project.build.directory}/resources/wsdl/spellservice.xml</wsdl> <extraargs> <extraarg>-client</extraarg> </extraargs> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin>
WDSLのクラスに基づいてアサーションを生成するためのプラグイン
<plugin> <groupId>org.assertj</groupId> <artifactId>assertj-assertions-generator-maven-plugin</artifactId> <version>2.0.0</version> <executions> <execution> <goals> <goal>generate-assertions</goal> </goals> </execution> </executions> <configuration> <classes> <param>net.yandex.speller.services.spellservice.SpellResult</param> <param>net.yandex.speller.services.spellservice.SpellError</param> </classes> <hierarchical>true</hierarchical> <entryPointClassPackage>org.assertj</entryPointClassPackage> <targetDir>${project.basedir}/src/generated</targetDir> <generateSoftAssertions>true</generateSoftAssertions> <!-- . <templates> <templatesDirectory>src/main/resources/templates/</templatesDirectory> <softEntryPointAssertionClass>class.txt</softEntryPointAssertionClass> <softEntryPointAssertionMethod>method.txt</softEntryPointAssertionMethod> <objectAssertion>object.txt</objectAssertion> <wholeNumberAssertion>primirives.txt</wholeNumberAssertion> <wholeNumberWrapperAssertion>wrappers.txt</wholeNumberWrapperAssertion> </templates> --> </configuration> </plugin>
また、テンプレートを編集して、イベントの生成をより細かく構成できることも重要です。
プラグインには、プロジェクトで生成されたクラスが含まれます
<プラグイン> <groupId> org.codehaus.mojo </ groupId> <artifactId> build-helper-maven-plugin </ artifactId> <バージョン> 1.9.1 </バージョン> <実行> <実行> <id>追加ソース</ id> <phase> generate-sources </ phase> <目標> <goal> add-source </ goal> </ goals> <構成> <ソース> <source> $ {project.basedir} / src /生成</ source> </ sources> </構成> </実行> </ executions> </ plugin>
依存関係を追加します。
必要な依存関係
<!-- --> <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.8</version> <scope>test</scope> <exclusions> <exclusion> <groupId>junit</groupId> <artifactId>junit</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <version>3.2.0</version> </dependency>
3.テストメソッドのコードは次のようになります。
@Test(description = " ") public void t1_positive() throws Exception { CheckTextRequest r = new CheckTextRequest(); r.setText(" "); CheckTextResponse resp = port.checkText(r); SpellResult res = resp.getSpellResult(); soft.assertThat(res).as(" SpellResult").hasNoError(); } @Test(description = " ") public void t2_negative() throws Exception { CheckTextRequest r = new CheckTextRequest(); r.setText(" "); CheckTextResponse resp = port.checkText(r); SpellResult res = resp.getSpellResult(); SpellError sError = res.getError().get(0); soft.assertThat(sError).as(" SpellError") .hasCode(1) .hasCol(24) .hasLen(7) .hasPos(24) .hasRow(0) .hasWord("") .hasOnlyS(""); // has... - AssertJ }
mvn testコマンドを実行して、動作を確認できます
参照:
AssertJ- http: //joel-costigliola.github.io/assertj/
作業例-SOAPTester