AssertJを使用してWebサービスをテストする別の方法

Webサービスをテストする私の方法を共有したかった。



原則は次のとおりです。



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



All Articles