{"id":203,"date":"2022-08-23T10:14:49","date_gmt":"2022-08-23T13:14:49","guid":{"rendered":"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/?post_type=v1&#038;p=203"},"modified":"2022-08-26T10:40:46","modified_gmt":"2022-08-26T13:40:46","slug":"testes","status":"publish","type":"v1","link":"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/sumario\/testes\/","title":{"rendered":"Testes"},"content":{"rendered":"<p>Documenta\u00e7\u00e3o dos projetos de testes automatizados<\/p>\n<h2 id=\"1---introdu\u00e7\u00e3o\"><strong>1 &#8211; Introdu\u00e7\u00e3o<\/strong><\/h2>\n<h4 id=\"11---vis\u00e3o-geral\"><strong>1.1 &#8211; Vis\u00e3o Geral<\/strong><\/h4>\n<p>Este documento possui como finalidade definir conceitos a serem aplicados no processo de desenvolvimento de testes realizados nos projetos da institui\u00e7\u00e3o, al\u00e9m de padronizar as nomenclaturas empregadas nos projetos. Para tanto, iremos reunir informa\u00e7\u00f5es necess\u00e1rias para concluir qualquer demanda relativa ao tema.<\/p>\n<h4 id=\"12---escopo\"><strong>1.2 &#8211; Escopo<\/strong><\/h4>\n<p>Este documento contempla informa\u00e7\u00f5es de tecnologias de desenvolvimento de testes, al\u00e9m das tecnologias de implanta\u00e7\u00e3o e configura\u00e7\u00e3o de novos projetos. \u00c9 tamb\u00e9m escopo deste documento, orientar os colaboradores sobre os padr\u00f5es de desenvolvimento definidos pela DPMG al\u00e9m das suas respectivas defini\u00e7\u00f5es de projetos. Ser\u00e3o descritas as camadas obrigat\u00f3rias em todos os projetos de testes automatizados, requisitos m\u00ednimos para qualidade dos testes, e mecanismos essenciais para proporcionar o m\u00e1ximo de reuso de c\u00f3digo, reduzindo substancialmente os custos de manuten\u00e7\u00e3o.<\/p>\n<h2 id=\"2---representa\u00e7\u00e3o-da-arquitetura\"><strong>2 &#8211; Representa\u00e7\u00e3o da Arquitetura<\/strong><\/h2>\n<p>2.1-Selenium java Existem diversas ferramentas que interagem com aplica\u00e7\u00f5es frontend que permitem automatizar os testes desejados. Visando uma alta escalabilidade para funcionamento integrado dos testes, escolheu-se o Selenium em sua vers\u00e3o para Java, pois une a pot\u00eancia do selenium webdriver com a robustez da stack do JAVA. A comunica\u00e7\u00e3o dos testes com as aplica\u00e7\u00f5es ser\u00e1 feita por uma gama de navegadores, que ser\u00e3o posteriormente discutidos, que ir\u00e3o navegar pelos ambientes de desenvolvimento, homologa\u00e7\u00e3o e produ\u00e7\u00e3o para garantir o correto funcionamento das aplica\u00e7\u00f5es em todo processo produtivo. Um grande diferencial do Selenium JAVA \u00e9 a possibilidade de integra\u00e7\u00e3o com o jenkins via maven, al\u00e9m de executar os testes em paralelo, reduzindo consideravelmente o tempo de execu\u00e7\u00e3o.<\/p>\n<h4 id=\"22-junit\"><strong>2.2-jUnit<\/strong><\/h4>\n<p>O jUnit \u00e9 o framework escolhido para facilitar a cria\u00e7\u00e3o e manuten\u00e7\u00e3o do c\u00f3digo, permitindo as nota\u00e7\u00f5es de @Test em cada unidade de teste, que posteriormente \u00e9 utilizada para ser executada nas suites, tamb\u00e9m definidas pelo JUnit. Com o JUnit, pode-se componentizar os teste, isol\u00e1-los e, assim, padroniz\u00e1-los com entradas parametrizadas. Tal implementa\u00e7\u00e3o permite um processo de desenvolvimento cont\u00ednuo, simult\u00e2neo entre v\u00e1rios funcion\u00e1rios e de extrema agilidade.<\/p>\n<h4 id=\"23-apache-maven\"><strong>2.3-Apache Maven<\/strong><\/h4>\n<p>O Maven \u00e9 uma ferramenta de automa\u00e7\u00e3o de compila\u00e7\u00e3o que constr\u00f3i e gerencia projetos, principalmente projetos Java. Para os projetos de testes, o maven, por meio do arquivo POM.xml, ir\u00e1 organizar as vers\u00f5es do selenium, jUnit, bem como as classes que ser\u00e3o executadas e os plugins necess\u00e1rios para tanto. O Maven ir\u00e1, antes de executar o projeto, baixar todos os artefatos necess\u00e1rios para o correto funcionamento da aplica\u00e7\u00e3o e salv\u00e1-los em cache, facilitando a manuten\u00e7\u00e3o das configura\u00e7\u00f5es.<\/p>\n<h4 id=\"24-jenkins\"><strong>2.4-Jenkins<\/strong><\/h4>\n<p>O Jenkins \u00e9 um servidor de automa\u00e7\u00e3o de c\u00f3digo robusto que auxilia na constru\u00e7\u00e3o e execu\u00e7\u00e3o dos testes. Por meio dele, os testes ser\u00e3o executados sempre que ocorrer uma altera\u00e7\u00e3o nas aplica\u00e7\u00f5es, e exibir\u00e1 o resultado nos displays posicionados nos escrit\u00f3rios da dpMG. As configura\u00e7\u00f5es do jenkins devem ser feitas pelo arquivo jenkinsfile, seguindo tamb\u00e9m os padr\u00f5es de projeto.<\/p>\n<h2 id=\"3-descri\u00e7\u00e3o-do-projeto\"><strong>3-Descri\u00e7\u00e3o do projeto<\/strong><\/h2>\n<h4 id=\"31-dsls\"><strong>3.1-DSLs<\/strong><\/h4>\n<p>O Selenium-java \u00e9 robusto e muito eficiente. Entretanto, ele possui um problema consider\u00e1vel quando trabalhamos com projetos complexos: a verbosidade. Como os m\u00e9todos que interagem com as p\u00e1ginas da web s\u00e3o extremamente extensos, utilizamos o DSL para transform\u00e1-los em m\u00e9todos mais intuitivos e simplificados. No DSL, deve-se manter os m\u00e9todos mais utilizados no dia a dia, como clicar em bot\u00f5es e preencher caixas de texto, preferencialmente recebendo um By gen\u00e9rico.<\/p>\n<h4 id=\"32-page-objects\"><strong>3.2-Page Objects<\/strong><\/h4>\n<p>Todos os testes ser\u00e3o feitos em p\u00e1ginas web. Sendo assim, deve-se criar os Page Objects que ir\u00e3o conter, para cada p\u00e1gina a ser testada, absolutamente todos os objetos que podemos interagir, como bot\u00f5es, text fields, combo boxes e grids. Dessa forma, podendo acessar e interagir com todas as funcionalidades da p\u00e1gina, os testes ficar\u00e3o extremamente descritivos e pouco verbosos. \u00c9 v\u00e1lido ressaltar que os Page Objects devem utilizar os m\u00e9todos definidos no DSL para facilitar a manuten\u00e7\u00e3o do c\u00f3digo.<\/p>\n<h4 id=\"33-testes\"><strong>3.3-Testes<\/strong><\/h4>\n<p>Com os Page Objects estruturados, a constru\u00e7\u00e3o dos testes \u00e9 relativamente simples. Estruturando uma sequ\u00eancia de instru\u00e7\u00f5es, \u00e9 preciso apenas criar as assertivas para garantir que o resultado da instru\u00e7\u00e3o foi esperado. \u00c9 recomend\u00e1vel que para testes que necessitam de altera\u00e7\u00f5es em entradas, por exemplo, utilizar a fun\u00e7\u00e3o de parametriza\u00e7\u00e3o do jUnit, possibilitando a reciclagem da estrutura do teste e reduzindo a repeti\u00e7\u00e3o de c\u00f3digo. Por fim, para garantir que um teste n\u00e3o ir\u00e1 influenciar os outros, \u00e9 obrigat\u00f3rio extender a classe BaseTest para garantir que o pr\u00f3ximo teste crie uma nova inst\u00e2ncia do navegador.<\/p>\n<h4 id=\"34-suites\"><strong>3.4-Suites<\/strong><\/h4>\n<p>Os testes possuir\u00e3o a nota\u00e7\u00e3o de @Test, para indicar ao jUnit que eles ser\u00e3o, efetivamente, unidades de teste a serem executadas. Para tanto, \u00e9 preciso criar classes Suites para organizar sequencialmente quais classes de teste ser\u00e3o executadas pelo maven.<\/p>\n<h4 id=\"35-webdriver-e-suas-fun\u00e7\u00f5es\"><strong>3.5-WebDriver e suas fun\u00e7\u00f5es<\/strong><\/h4>\n<p>A ferramenta que permite a integra\u00e7\u00e3o entre o navegador e o projeto \u00e9 o webdriver. Ele \u00e9 inicializado em todos os testes, e fechado ao fim dos mesmos, al\u00e9m de ser utilizado para interagir com os elementos web. Dessa forma, \u00e9 interessante que exista uma classe espec\u00edfica para manipular essas fun\u00e7\u00f5es, mantendo o padr\u00e3o de manuten\u00e7\u00e3o do c\u00f3digo. Logo, a classe DriverFactory possui a funcionalidade de iniciar e fornecer posteriormente o webdriver para os testes, al\u00e9m de finaliz\u00e1-lo no BaseTest ao fim de cada execu\u00e7\u00e3o.<\/p>\n<h2 id=\"4-estruturas-obrigat\u00f3rias-do-projeto\"><strong>4-Estruturas obrigat\u00f3rias do projeto<\/strong><\/h2>\n<h4 id=\"41-pacote-core\"><strong>4.1-Pacote Core<\/strong><\/h4>\n<p>O pacote Core cont\u00e9m as configura\u00e7\u00f5es e propriedades que ser\u00e3o utilizadas em praticamente todas as classes. Nele, deve-se implementar, obrigatoriamente, uma classe contendo dados sens\u00edveis, de acordo com a LDAP, uma classe de BasePage e BaseTest, um DriverFactory, um dicion\u00e1rio do Selenium(DSL) e uma classe de Propriedades.<\/p>\n<ul>\n<li>A classe de dados sens\u00edveis deve conter getters est\u00e1ticos para obter os dados a partir das vari\u00e1veis de ambiente\n<pre><code class=\"language-java\"> ex:public static String getSenha() {return System.getenv(\"PASSWORD\");\n<\/code><\/pre>\n<\/li>\n<li>A classe BasePage deve instanciar o DSL.<\/li>\n<li>A classe BaseTest deve conter um m\u00e9todo que fecha o browser ao finalizar um teste.<\/li>\n<li>A classe DriverFactory deve conter os m\u00e9todos est\u00e1ticos para iniciar e finalizar o browser.<\/li>\n<li>O DSL deve conter os m\u00e9todos mais utilizados pelo selenium, permitindo uma leitura mais limpa dos testes.<\/li>\n<li>A classe Propriedades deve conter urls contidas no escopo do projeto, o caminho para os drivers no pacote de recursos e a sele\u00e7\u00e3o de qual browser ser\u00e1 executado.<\/li>\n<\/ul>\n<h4 id=\"42-pacote-do-projeto\"><strong>4.2-Pacote do projeto<\/strong><\/h4>\n<p>O pacote do projeto possuir\u00e1 o conjunto de page objects, suites e testes que ir\u00e3o garantir a execu\u00e7\u00e3o e funcionalidade correta das aplica\u00e7\u00f5es que ser\u00e3o testadas. Dentro do pacote do projeto, teremos 3 outros pacotes:<\/p>\n<ul>\n<li>pages, que conter\u00e1 os page Objects. O pacote pages deve preferencialmente ser subdividido em outros pacotes, dependendo das funcionalidades do projeto.<\/li>\n<li>testes, que conter\u00e1 todos os testes, preferencialmente subdivididos em funcionalidades, assim como as pages.<\/li>\n<li>suites, que ir\u00e3o definir a sequ\u00eancia de classes testes que ser\u00e3o executadas. As suites devem ser classes divididas de acordo com a funcionalidade, sem a necessidade da subdivis\u00e3o em pacotes.<\/li>\n<\/ul>\n<h2 id=\"5-cria\u00e7\u00e3o-de-um-projeto-novo\"><strong>5-Cria\u00e7\u00e3o de um projeto novo<\/strong><\/h2>\n<h4 id=\"51-criando-projeto-maven\"><strong>5.1-Criando Projeto Maven<\/strong><\/h4>\n<p>O primeiro passo para criar um novo projeto de testes automatizados \u00e9 cri\u00e1-lo como projeto maven. O projeto maven vir\u00e1 com um pacote raiz, o arquivo POM.xml e outros arquivos espec\u00edficos do seu ambiente de desenvolvimento. \u00c9 interessante que, ap\u00f3s criar essa estrutura, atualizar o projeto base no git com esses arquivos.<\/p>\n<h4 id=\"52-configurando-o-pomxml\"><strong>5.2-Configurando o POM.xml<\/strong><\/h4>\n<p>Algumas IDEs pedem para configurar partes padr\u00f5es do POM durante a cria\u00e7\u00e3o do projeto, outras utilizam um padr\u00e3o. De qualquer forma, inicialmente o projeto possuir\u00e1 esta estrutura:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img1.png\" alt=\"img\" \/><\/p>\n<p>Inicialmente, \u00e9 preciso alterar o para o padr\u00e3o da defensoria. <code>java&lt;groupId&gt;defensoria.mg.def.br&lt;\/groupId&gt;<\/code><\/p>\n<p>Em sequ\u00eancia, deve-se adicionar as depend\u00eancias desejadas, sendo elas o Selenium-java e o jUnit.<\/p>\n<pre><code class=\"language-java\">&lt;dependencies&gt;\n   &lt;dependency&gt;\n       &lt;groupId&gt;org.seleniumhq.selenium&lt;\/groupId&gt;\n       &lt;artifactId&gt;selenium-java&lt;\/artifactId&gt;\n       &lt;version&gt;3.141.59&lt;\/version&gt;\n   &lt;\/dependency&gt;\n   &lt;dependency&gt;\n       &lt;groupId&gt;junit&lt;\/groupId&gt;\n       &lt;artifactId&gt;junit&lt;\/artifactId&gt;\n       &lt;version&gt;4.12&lt;\/version&gt;\n       &lt;scope&gt;compile&lt;\/scope&gt;\n   &lt;\/dependency&gt;\n&lt;\/dependencies&gt;\n<\/code><\/pre>\n<p>Por fim, \u00e9 preciso definir as instru\u00e7\u00f5es de constru\u00e7\u00e3o do projeto, podendo ser alterado de acordo com as necessidades e desafios encontrados.<\/p>\n<pre><code class=\"language-java\">&lt;build&gt;\n   &lt;defaultGoal&gt;install&lt;\/defaultGoal&gt;\n   &lt;testSourceDirectory&gt;src&lt;\/testSourceDirectory&gt;\n   &lt;plugins&gt;\n       &lt;plugin&gt;\n           &lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt;\n           &lt;artifactId&gt;maven-surefire-plugin&lt;\/artifactId&gt;\n           &lt;version&gt;2.22.0&lt;\/version&gt;\n           &lt;configuration&gt;\n               &lt;includes&gt;seuProjeto.suites\/*.java&lt;\/includes&gt;\n               &lt;parallel&gt;suites&lt;\/parallel&gt;\n               &lt;threadCount&gt;4&lt;\/threadCount&gt;\n           &lt;\/configuration&gt;\n       &lt;\/plugin&gt;\n       &lt;plugin&gt;\n           &lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt;\n           &lt;artifactId&gt;maven-compiler-plugin&lt;\/artifactId&gt;\n           &lt;version&gt;3.8.1&lt;\/version&gt;\n           &lt;configuration&gt;\n               &lt;source&gt;1.8&lt;\/source&gt;\n               &lt;target&gt;1.8&lt;\/target&gt;\n           &lt;\/configuration&gt;\n       &lt;\/plugin&gt;\n       &lt;plugin&gt;\n           &lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt;\n           &lt;artifactId&gt;maven-surefire-report-plugin&lt;\/artifactId&gt;\n           &lt;version&gt;3.0.0-M5&lt;\/version&gt;\n       &lt;\/plugin&gt;\n   &lt;\/plugins&gt;\n&lt;\/build&gt;\n<\/code><\/pre>\n<p>Os plugins utilizados dar\u00e3o suporte ao jUnit e selenium, sendo o mais importante o maven-surefire-plugin. Em sua parte de configura\u00e7\u00f5es, veremos o seguinte trecho<\/p>\n<pre><code class=\"language-java\">&lt;configuration&gt;\n   &lt;includes&gt;seuProjeto.suites\/*.java&lt;\/includes&gt;\n<\/code><\/pre>\n<p>Deve apontar para o pacote que cont\u00e9m todas as suites do projeto.<\/p>\n<pre><code class=\"language-java\">&lt;parallel&gt;suites&lt;\/parallel&gt;\n<\/code><\/pre>\n<p>Define as nota\u00e7\u00f5es do jUnit que ir\u00e3o ser executadas paralelamente.<\/p>\n<pre><code class=\"language-java\">&lt;threadCount&gt;4&lt;\/threadCount&gt;\n<\/code><\/pre>\n<p>Define a quantidade de threads do processador destinadas a executar os testes paralelamente (recomenda-se de 4 a 6 threads).<\/p>\n<pre><code class=\"language-java\">&lt;\/configuration&gt;\n<\/code><\/pre>\n<p>Essa parte permitir\u00e1 a execu\u00e7\u00e3o em paralelo dos testes.<\/p>\n<h4 id=\"53-configurando-o-settingsxml\"><strong>5.3-Configurando o settings.xml<\/strong><\/h4>\n<p>O maven possui um arquivo de configura\u00e7\u00f5es padr\u00e3o, entretanto devemos utilizar as configura\u00e7\u00f5es no padr\u00e3o da defensoria.<\/p>\n<ol>\n<li>Clone ou baixe o projeto CONFIGURACOES-PROJETOS em alguma pasta da sua m\u00e1quina.<\/li>\n<li>Na sua IDE, abra as configura\u00e7\u00f5es e pesquise por \u201cmaven\u201d. Sua tela deve ser semelhante a seguinte:<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img1.png\" alt=\"img\" \/><\/p>\n<ol start=\"3\">\n<li>Sobrescreva o arquivo de configura\u00e7\u00f5es de usu\u00e1rio -no caso da imagem acima, clique em \u201coverride\u201d do \u201cUser settings file\u201d.<\/li>\n<li>Busque pela pasta de configura\u00e7\u00f5es de projetos&gt;maven e selecione settings.xml.<\/li>\n<li>Aplique as altera\u00e7\u00f5es.<\/li>\n<\/ol>\n<h4 id=\"54-configurando-o-jenkins\"><strong>5.4-Configurando o jenkins<\/strong><\/h4>\n<p>O jenkinsfile \u00e9 o arquivo que explica para o jenkins como o projeto deve ser executado em pipeline, portanto \u00e9 a conex\u00e3o do projeto com a pipeline. Inicialmente, crie na camada mais externa do projeto um arquivo chamado \u201cjenkinsfile\u201d. O c\u00f3digo a seguir \u00e9 o m\u00ednimo para executar um projeto:<\/p>\n<pre><code class=\"language-java\">pipeline {\n   agent any\n   tools{\n      jdk 'JAVA_11'\n      maven 'MAVEN 3.6.3'\n\n   stages{\n       \/\/ este stage builda o projeto para poder rodar\n       stage('Build'){\n           steps {\n               sh 'mvn install -DskipTests -Dselenide.browserBinary=\"chrome\/usr\/bin\/google-chrome\"'\n           }\n       }\n       stage ('Executar testes gerais'){\n           steps {\n               \/\/ este \u00e9 o comando em ShellScript que roda os testes automatizados\n               sh \"mvn clean test\"\n           }\n       }\n   }\n   \/\/ este passo roda ao final do build\n   post {\n       \/\/ em caso de sucesso, limpa o diretorio para manter o workspace limpo e garantir que n\u00e3o h\u00e1 cache no proximo run\n       success {\n           deleteDir()\n       }\n   }\n}\n<\/code><\/pre>\n<p>Dessa forma, precisamos configurar o projeto no jenkins e conect\u00e1-lo ao git.<\/p>\n<ol>\n<li>Entre em <a href=\"http:\/\/jenkins.defensoria.mg.def.br\/\">http:\/\/jenkins.defensoria.mg.def.br\/<\/a> e fa\u00e7a login.<\/li>\n<li>Selecione no canto superior esquerdo a op\u00e7\u00e3o \u201cNew Item\u201d<\/li>\n<li>Em \u201cEnter an item name\u201d, coloque o nome do projeto seguindo o padr\u00e3o da dpmg \u201cQA-AUTOMACAO-\u201d<\/li>\n<li>Selecione \u201cPipeline\u201d e clique em OK. As configura\u00e7\u00f5es s\u00e3o extensas, ent\u00e3o siga os passos com aten\u00e7\u00e3o 1-)Selecione \u201cDiscard old builds\u201d e preencha da seguinte forma<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img3.png\" alt=\"img\" \/><\/p>\n<p>2-)Em \u201cBuild Triggers\u201d selecione as seguintes op\u00e7\u00f5es:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img4.png\" alt=\"img\" \/><\/p>\n<p>Antes de progredir, salve em algum local o Gitlab webhook URL, no caso acima <a href=\"http:\/\/jenkins.defensoria.mg.def.br\/project\/QA-AUTOMACAO-MDS\">http:\/\/jenkins.defensoria.mg.def.br\/project\/QA-AUTOMACAO-MDS<\/a> Clique em \u201cAdvanced\u2026\u201d e gere um token secreto que tamb\u00e9m deve ser salvo\/anotado<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img5.png\" alt=\"img\" \/><\/p>\n<p>3-)Em \u201cPipeline, selecione \u201cPipeline script from SCM\u201d e preencha o restante das op\u00e7\u00f5es de acordo com o seu projeto<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img6.png\" alt=\"img\" \/><\/p>\n<p>4-)Clique em salvar. Agora devemos criar o webhook no jenkins. 1-)Entre no projeto pelo git 2-)Na parte esquerda da tela, clique em configura\u00e7\u00f5es&gt;Webhooks (aten\u00e7\u00e3o que \u00e9 preciso ter permiss\u00f5es necess\u00e1rias para visualizar essas op\u00e7\u00f5es) 3-)Em URL, cole o link fornecido pelo jenkins \u201cGitlab webhook URL\u201d 4-)Em Secret Token, cole o token secreto fornecido pelo jenkins 5-)Nos Triggers, selecione: Push events (n\u00e3o \u00e9 necess\u00e1rio definir uma branch espec\u00edfica). Merge request events. 6-)Selecione \u201cEnable SSL verification\u201d e clique em Save changes.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img7.png\" alt=\"img\" \/><\/p>\n<p>Se tudo ocorreu como deveria, o projeto j\u00e1 est\u00e1 configurado na pipeline e deve executar os testes sempre que ocorra uma altera\u00e7\u00e3o no git. \u00c9 importante adicionar o webhook acima, da mesma forma, em todos os projetos que podem afetar as funcionalidades contidas no escopo dos seus testes.<\/p>\n<p>**5.5-Executando o projeto localmente## **<\/p>\n<p>O projeto pode ser executado tanto pela IDE, quanto pela linha de c\u00f3digo. Como cada IDE configura a execu\u00e7\u00e3o do projeto de forma distinta, iremos ilustrar apenas por linha de c\u00f3digo, sendo poss\u00edvel transcrever para a IDE. Como o projeto ser\u00e1 executado com aux\u00edlio do maven, abriremos ele no terminal e executaremos o seguinte comando: mvn clean install -DskipTests Dessa forma, iremos instalar as depend\u00eancias e limpar qualquer dado salvo de execu\u00e7\u00f5es anteriores. Em sequ\u00eancia, executaremos o seguinte comando: mvn test Assim, executaremos os testes indicados no arquivo POM.xml.<\/p>\n<h2 id=\"6-exemplificando-as-configura\u00e7\u00f5es-locais-na-ide-intellij\"><strong>6-Exemplificando as configura\u00e7\u00f5es locais na IDE IntelliJ<\/strong><\/h2>\n<h4 id=\"61-configurando-o-maven-no-projeto\"><strong>6.1-Configurando o maven no projeto<\/strong><\/h4>\n<ul>\n<li>Clicar em Edit Configurations<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img8.png\" alt=\"img\" \/><\/p>\n<ul>\n<li>Clicar no +<\/li>\n<li>Ao abrir procurar por maven e Clicar para abrir<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img9.png\" alt=\"img\" \/><\/p>\n<p>Em Parameters<\/p>\n<ol>\n<li>Preencher Name (maven &#8211; build)<\/li>\n<li>Parameters &#8211; Working directory (clicar na pasta ao lado e escolher \u201cpasta principal do projeto\u201d)<\/li>\n<li>command line (\u201ctest\u201d)<\/li>\n<li>Profiles \u201cdev\u201d<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img10.png\" alt=\"img\" \/><\/p>\n<p>*1 &#8211; Em Before launch clicar no +<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img11.png\" alt=\"img\" \/><\/p>\n<p>*2 &#8211; Selecionar Run Maven Goal<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img12.png\" alt=\"img\" \/><\/p>\n<p>*1 &#8211; Working directory (escolher pasta do projeto) *2 &#8211; Command line (clean install -DSkipTests) *3 &#8211; ok<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img13.png\" alt=\"img\" \/><\/p>\n<p>Em General<\/p>\n<p>*1 User settings file (escolher pasta do projeto settings) *2 &#8211; Marcar a op\u00e7\u00e3o \u201cOverride\u201d<br \/>\n*3 &#8211; Clicar Apply *4 &#8211; Clicar ok<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-content\/uploads\/2022\/08\/img14.png\" alt=\"img\" \/><\/p>\n","protected":false},"featured_media":0,"parent":0,"menu_order":7,"template":"","class_list":["post-203","v1","type-v1","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-json\/wp\/v2\/v1\/203","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-json\/wp\/v2\/v1"}],"about":[{"href":"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-json\/wp\/v2\/types\/v1"}],"wp:attachment":[{"href":"https:\/\/gerais.defensoria.mg.def.br\/metodologia-de-desenvolvimento\/wp-json\/wp\/v2\/media?parent=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}