Atlassian Jira Serverの統合テストを行う方法について話しましょう。 これらの目的のために、Atlassianが提供するライブラリjira-func-test-pluginおよびjira-testkit-pluginを使用します。
統合テストでは、プラグインとJiraユーザーインターフェイスによってエクスポートされたサービスを介してJiraプラグインのパフォーマンスをテストできます。 もちろん、Selenium WebDriverを使用して、Jiraのユーザーインターフェイスをテストするコードを作成するだけです。 ただし、この場合、すべてのロジックを自分で規定する必要があります。 たとえば、ユーザーのログイン、JQLクエリの入力、プロジェクトの作成、タスクの作成、プロジェクトの権限の管理などの形式で要素をチェックします。 また、アトラシアンライブラリには、このための準備が整ったメソッドが用意されています。 さらに、Jiraの新しいバージョンにアップグレードするときにコードを変更する必要はありません。このバージョンに適したAtlassianライブラリを使用するだけです。
Atlassianが提供するAtlassian Jiraの統合テストを作成するには、3つの方法があります。
- 有線テストでは、プラグインが外部にエクスポートするサービスをテストできます。 そのようなテストの例はこちらです。
- 統合テストを実行するには、jira-func-test-pluginおよびjira-testkit-pluginプラグインが必要です。 これらのテストでは、HTTPリクエストとレスポンスを使用してJiraユーザーインターフェイスの正しい動作を検証します。 そのようなテストの例はこちらです。
- ページオブジェクトテストはJiraユーザーインターフェイスもテストしますが、Selenium WebDriverを介して機能します。
Atlassianは、Pageオブジェクトテストによるユーザーインターフェイスのテストは、jira-func-test-pluginによるテストよりも望ましいと書いています。 しかし、この記事では、このプラグインを使用して統合テストを作成する方法を学習します。
この記事で開発された統合テストを備えたプラグインのソースコードは、 ここにあります 。
統合テストとは何ですか?
統合テストと単体テストの主な違いは、統合テストとは異なり、単体テストが動作中のJiraインスタンスを必要としないことです。 したがって、統合テスト中にJiraインスタンスを上げる必要があります。 テストは、ローカルインスタンス(統合テストでプラグインから解除されたJira)とリモートインスタンスの両方で実行できます。
最初にローカルインスタンスのテストを作成しましょう。次に、リモートインスタンスで同じテストを実行する方法を説明します。
Jiraプラグインを作成する
プラグインはatlas-create-jira-pluginコマンドを使用して作成されます 。
プラグインに依存関係を追加します
プラグインのpom.xmlファイルに次の依存関係を追加する必要があります。
<dependency> <groupId>com.atlassian.jira.tests</groupId> <artifactId>jira-testkit-client</artifactId> <version>${jira.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-func-tests</artifactId> <version>${jira.version}</version> <scope>test</scope> </dependency>
これらの依存関係により、統合テストを開発できます。
必要なプラグインをローカルJiraインスタンスにインストールします
統合テストを機能させるには、ローカルJiraインスタンスを起動するときに、jira-func-test-pluginおよびjira-testkit-pluginプラグインがインストールされていることを確認する必要があります。
これを行うには、pom.xmlのmaven-jira-pluginプラグイン構成に次の行を追加します。
<pluginArtifacts> <pluginArtifact> <groupId>com.atlassian.jira</groupId> <artifactId>jira-func-test-plugin</artifactId> <version>${jira.version}</version> </pluginArtifact> <pluginArtifact> <groupId>com.atlassian.jira.tests</groupId> <artifactId>jira-testkit-plugin</artifactId> <version>7.12.3</version> </pluginArtifact> </pluginArtifacts>
テストを書く
ファイルsrc / test / java / it / ru / matveev / alexey / jira / integrationtests / selenium / ExampleTest.javaを作成します。
package it.ru.matveev.alexey.jira.integrationtests.selenium; import com.atlassian.jira.functest.framework.BaseJiraFuncTest; import org.junit.After; import org.junit.Before; import org.junit.Test; public class ExampleTest extends BaseJiraFuncTest { @Before public void setup() { backdoor.project().addProject("testproject", "TP", "admin"); backdoor.issues().createIssue("TP", "test issue"); } @Test public void goToIssueNavigator() { navigation.login("admin"); navigation.issueNavigator().createSearch("project = TP"); tester.assertTextPresent("TP-1"); } @After public void cleanup() { backdoor.project().deleteProject("TP"); }
デフォルトでは、統合テストを含むファイルを実行するには、すべてのテストに接尾辞
Test
が必要です。 これは、maven-jira-pluginプラグイン構成の
functionalTestPattern
パラメーターでオーバーライドできます。
上記のテストでは、Issue Navigatorでオンデマンド検索の動作をテストします。
setup
方法では、タスクを含むプロジェクトを作成し、このタスクを受け取るリクエストを作成して、実際に選択できることを確認します。 次に、
cleanup
メソッドで、作成したプロジェクトを削除します。
テストを実行する
テストは
atlas-integration-test
コマンドを使用して起動されます。 このコマンドで、ローカルJiraが立ち上がり、統合テストが実行されます。
試験構造
統合テストの作成時に継承できるクラスがいくつかあります:
BaseJiraEmailTest
、
BaseJiraFuncTest
、
BaseJiraRestTest
。
最も使用されるクラスは
BaseJiraFuncTest
です。 必要なすべての機能をテストできます。
このクラスには、そのようなクラス変数があります。
-
backdoor
:プロジェクト、インデックス、プロジェクト許可スキーム、ユーザーなどの管理などの管理機能を実行できます。 -
navigation
:ユーザーインターフェイスでナビゲートできます。 また、目的のユーザーの下でJiraを開始および終了できます。 -
tester
:ページを操作できます。フィールド値の設定、ボタンのクリック、フォームにフィールドが存在するかどうかの確認など。
統合テストはパスワード
admin
使用して
admin
としてJiraにアクセスします。したがって、Jiraで統合テストを機能させるには、このユーザーにこのパスワードが必要です。
navigation.login("username")
コマンドを使用する場合、Jiraにログインするユーザーのパスワードはユーザー名と一致する必要があります。
リモートインスタンスで統合テストを実行する
統合テストをリモートインスタンスで実行するには、jira-func-test-pluginおよびjira-testkit-pluginプラグインをリモートインスタンスにインストールする必要があります。
さらに、統合テストを備えたプラグインでは、src / test / resources / localtest.propertiesファイルを変更する必要があります。
jira.protocol = http jira.host = remote-instance jira.port = 2991 jira.context = /jira jira.edition = all jira.xml.data.location = src/test/xml
atlas-integration-test
コマンドを実行した後、リモートインスタンスでテストが実行されます。
試験例
幸いなことに、jira-func-testsパッケージの開発者は、このパッケージにあらゆる場面でのテストを含む多数の例を含めています。 これらはwebtestsパッケージに含まれています。
Jiraをテストして頑張ってください!