
Vamos falar sobre como fazer testes de integração para o Atlassian Jira Server. Para esses fins, usaremos as bibliotecas fornecidas pelo Atlassian: jira-func-test-plugin e jira-testkit-plugin.
Os testes de integração permitem testar a operação dos plug-ins do Jira por meio dos serviços exportados pelo plug-in e pela interface do usuário do Jira. Obviamente, você pode usar o Selenium WebDriver e escrever um código para testar a interface do usuário do Jira. No entanto, neste caso, você deve prescrever toda a lógica. Por exemplo, login do usuário, inserindo uma consulta JQL, criando um projeto, verificando elementos na forma de criação de uma tarefa, gerenciando permissões do projeto e assim por diante. E as bibliotecas Atlassian fornecem métodos que já estão prontos para isso. Além disso, seu código não precisa ser alterado ao atualizar para uma nova versão do Jira, basta usar as bibliotecas Atlassian adequadas para esta versão.
Existem três maneiras de escrever testes de integração para o Atlassian Jira que o Atlassian fornece:
- Os testes com fio permitem testar os serviços que seu plug-in exporta externamente. Um exemplo desse teste está aqui .
- Os testes de integração requerem a execução dos plugins jira-func-test-plugin e jira-testkit-plugin. Esses testes verificam a operação correta da interface com o usuário do Jira usando solicitações e respostas HTTP. Um exemplo desse teste está aqui .
- Os testes de objetos de página também testam a interface do usuário do Jira, mas funcionam com o Selenium WebDriver.
Atlassian escreve que testar a interface do usuário através de testes de objetos de Página é mais preferível do que testar através do plugin jira-func-test-plugin. Mas neste artigo, aprenderemos como escrever testes de integração usando este plugin.
O código-fonte do plug-in com testes de integração desenvolvidos no artigo pode ser encontrado
aqui .
O que são testes de integração?
A principal diferença entre testes de integração e testes de unidade é que os testes de unidade não requerem uma instância do Jira em funcionamento, diferentemente dos testes de integração. Portanto, é necessário que uma instância do Jira seja criada durante o teste de integração. Os testes podem ocorrer tanto na instância local (Jira, extraída de nosso plug-in com testes de integração) quanto na remota.
Vamos primeiro escrever testes para uma instância local e, em seguida, mostrarei como executar os mesmos testes em uma instância remota.
Crie um plugin Jira
O plug-in é criado usando o
comando atlas-create-jira-plugin .
Adicione dependências ao nosso plugin
As seguintes dependências devem ser adicionadas ao arquivo pom.xml do nosso plugin:
<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>
Essas dependências nos permitirão desenvolver testes de integração.
Instale os plugins necessários na instância local do Jira
Para que os testes de integração funcionem, precisamos garantir que, quando iniciarmos a instância Jira local, os plug-ins jira-func-test-plugin e jira-testkit-plugin estejam instalados nela.
Para fazer isso, adicione as seguintes linhas à configuração do plug-in maven-jira-plugin no pom.xml:
<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>
Escrevendo um teste
Crie o arquivo 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"); }
Por padrão, todos os testes devem ter o sufixo
Test
para que arquivos com testes de integração sejam executados. Isso pode ser substituído pelo parâmetro
functionalTestPattern
na configuração do plug-in maven-jira-plugin.
No teste acima, testamos a operação da pesquisa sob demanda no Issue Navigator. No método de
setup
, crie um projeto com uma tarefa, depois escreva uma solicitação que receba essa tarefa e verifique se realmente conseguimos selecioná-la. Em seguida, no método de
cleanup
, excluímos o projeto criado.
Execute o teste
O teste é iniciado usando o comando
atlas-integration-test
. Nesse comando, o Jira local sobe e os testes de integração são executados nele.
Estrutura de teste
Você pode herdar várias classes ao escrever testes de integração:
BaseJiraEmailTest
,
BaseJiraFuncTest
,
BaseJiraRestTest
.
A classe mais usada é
BaseJiraFuncTest
. Ele permite que você teste todas as funcionalidades necessárias.
Nesta classe, existem variáveis de classe:
backdoor
: permite executar funções administrativas, como gerenciar projetos, índices, esquemas de permissão de projeto, usuários e assim por diante.navigation
: permite navegar na interface do usuário. Também permite que você entre e saia do Jira com o usuário desejado.tester
: permite trabalhar com páginas: defina valores de campos, clique em botões, verifique se existe um campo no formulário e assim por diante.
Os testes de integração acessam o Jira como
admin
com a senha
admin
; portanto, para testes de integração no Jira, esse usuário deve ter essa senha.
Ao usar o comando
navigation.login("username")
, a senha do usuário sob o qual você efetua login no Jira deve corresponder ao nome de usuário.
Executando testes de integração em uma instância remota
Para que os testes de integração sejam executados em uma instância remota, os plugins jira-func-test-plugin e jira-testkit-plugin devem estar instalados nele.
Além disso, no plug-in com testes de integração, é necessário fazer alterações no arquivo 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
Agora, depois de executar o comando
atlas-integration-test
, os testes serão executados na instância remota.
Exemplos de teste
A boa notícia é que os desenvolvedores do pacote jira-func-tests incluíram neste pacote um grande número de exemplos com testes para todas as ocasiões. Eles estão no pacote de testes da web.
Boa sorte com o teste de Jira!