Dúvida Execução por Tags

Topic created · 7 Posts · 104 Visualizações
  • Fala pessoal, estou com uma séria dúvida!

    Como posso executar meus testes por tags ?

    Tenho as seguintes classes!:

    @RunWith(JUnitPlatform.class)
    @SelectPackages("com.gpa.pa.sprint_1")
    @IncludeTags("development")
    public class Runner {
    }
    
    public class Execution {
    
    	public static void main(String[] args) throws MalformedURLException {
    
    		Result result = JUnitCore.runClasses(Runner.class);
    
    		for (Failure failure : result.getFailures()) {
    			System.out.println(failure.toString());
    		}
    
    		System.out.println(result.wasSuccessful());
    	}
    
    }
    
    
    @Test
    	@Tag("development")
    	public void MinhasPreferencias() {
    
    		this.clickByPath(componente.buttonEntrar);
    
    		this.sendKeyByPath(componente.inputCpfLogin, data.cpfLogin);
    
    		this.sendKeyByPath(componente.inputSenhaLogin, data.senhaLogin);
    
    		this.clickByPath(componente.buttonEntrarSucess);
    
    		this.clickByPath(componente.buttonPular);
    
    		this.clickById(componente.permitirLocalizacao);
    
    		this.clickByPath(componente.buttonAceitarConfigPreferencias);
    
    		String titulo = this.getTextByPath(componente.tituloMinhasPreferencias);
    
    		assertEquals("Minhas preferências", titulo);
    
    	}
    

    quando executo o main, ele não executa os testes no aparelho, só retorna no console TRUE, independente do que eu fizer, se eu rodar como Suite.class ele funciona tranquilo!

  • Junit 4 ou 5? (acho que junit4 é categorias…mas não me recordo agora…)…senão me engano tu precisa ter o includeTags no gradle…Se for no maven acho que fica no pom.xml isso…
    Se é algo do junit4, nem tenho idéia…

  • @Ramses-Saccol-de-Almeida Estou utilizando o JUnit 5!

    Segue as dependências adicionadas no maven.

    <dependencies>
    		<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    		<dependency>
    			<groupId>org.seleniumhq.selenium</groupId>
    			<artifactId>selenium-java</artifactId>
    			<version>3.141.59</version>
    		</dependency>
    		<!-- https://mvnrepository.com/artifact/io.appium/java-client -->
    		<dependency>
    			<groupId>io.appium</groupId>
    			<artifactId>java-client</artifactId>
    			<version>6.1.0</version>
    		</dependency>
    
    		<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
    		<dependency>
    			<groupId>com.google.code.gson</groupId>
    			<artifactId>gson</artifactId>
    		</dependency>
    
    		<!-- https://mvnrepository.com/artifact/org.junit/junit5-engine -->
    		<dependency>
    			<groupId>org.junit</groupId>
    			<artifactId>junit5-engine</artifactId>
    			<version>5.0.0-ALPHA</version>
    		</dependency>
    
    		<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-runner -->
    		<dependency>
    			<groupId>org.junit.platform</groupId>
    			<artifactId>junit-platform-runner</artifactId>
    			<version>1.3.2</version>
    			<scope>test</scope>
    		</dependency>
    
    
    		<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
    		<dependency>
    			<groupId>org.junit.vintage</groupId>
    			<artifactId>junit-vintage-engine</artifactId>
    			<version>5.3.2</version>
    			<scope>test</scope>
    		</dependency>
    
    
    	</dependencies>
    
  • Dá uma olhada nos docs, pode ter faltado algo…Eu usei mais pelo gradle…Era só passar por parametro e ele rodava “de boas”…Talvez tenha que ver se essa tag em alguma classe sem ser de teste não está dando problema…

    https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven-engines-configure

    Quando configurei, pelo gradle isso, eu basicamente rodava

    gradle clean test -Dtag="tags"
    

    E era isso, ele já rodava sem problemas respeitando as tags configuradas…

  • @Ramses-Saccol-de-Almeida Está complicado, já tentei de tudo, e nada!

    Quando rodo como Suite.class ele roda tranquilo!

  • @Yan-Reis Como assim? Eu não entendi como está rodando…
    Por acaso teu pom.xml tem essa config

    <!-- ... -->
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <groups>acceptance | !feature-a</groups>
                    <excludedGroups>integration, regression</excludedGroups>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <!-- ... -->
    

    ? (Vale dar uma reolhada no link ali que passei…)

  • @Yan-Reis Por exemplo, olha como ficou a configuração para o gradle…

    test {
    
        //para uso: gradle clean test -Dtag="tags"
        String tag = System.properties.getProperty("tag")
        systemProperties = [
                'junit.jupiter.extensions.autodetection.enabled': 'true',
                'junit.jupiter.testinstance.lifecycle.default': 'per_class'
        ]
    
        useJUnitPlatform() {
                includeTags String.valueOf(tag)
        }
    
        testLogging {
            events 'PASSED', 'FAILED', 'SKIPPED'
        }
    
        beforeTest { descriptor ->
            logger.lifecycle("Running test: ${descriptor}")
        }
        afterSuite { desc, result ->
            if (!desc.parent) {
                println "\nTest result: ${result.resultType}"
                println "Test summary: ${result.testCount} tests, " +
                        "${result.successfulTestCount} succeeded, " +
                        "${result.failedTestCount} failed, " +
                        "${result.skippedTestCount} skipped"
            }
        }
    
    }
    

    Como tu pode ver, a importancia está nessas propriedades…

    systemProperties = [
            'junit.jupiter.extensions.autodetection.enabled': 'true',
            'junit.jupiter.testinstance.lifecycle.default': 'per_class'
    ]
    

    Se tu falou que “rodo como suite.class”, já da para ver que o lifecycle tu definiu por classe… (per_class)…Eu ainda não entendi muito bem como está a sua estrutura e como está executando…Mas acho que precisa ver as opções do lifecycle para tentar resolver o teu problema…acho…(to meio que chutando no escuro…hehehe)
    Ps: Da uma lida nisso: https://junit.org/junit5/docs/current/user-guide/#writing-tests-test-instance-lifecycle-changing-default