TestNG - Usando o recurso de @DataProvider

Alguém tem algum exemplo usando o @DataProvider do TestNG?

Gostaria na verdade de compartilhar experiências de quem já trabalhou com esse conceito, como fez e o porquê que adotou…

um exemplo genérico:

classe: DataProviderTeste
método da classe:
@DataProvider(name=“navegar”)
public static Object[][] navegar(){
return new LeitorTestel().lerTeste(Gerenciador.localMassa+"\ teste.txt");
}

classe: Qualquer
método da classe:
@Test(dataProvider=“navegar”, dataProviderClass=DataProviderTeste.class)
public void navegarSiteRsi(Dados dados)throws Exception{

}

Oi Cleber, antes de tudo, muito obrigado pela ajuda. Os blogs indicados em outro post são ótimos já os conheço, inclusive até estive conversando com o Leornardo, enfim, quanto à TestNG função @DataProvider, você poderia dar um exemplo com maiores explicações
ao qual usaria em determinada situação?

Abração,
André AS.

O que esse localMassa?

E ae rapa,
Realmente o Leonardo é um cara muito bacana, cola nele que vc se dá bem kkkkkkkk

o localMassa é uma variável estática que eu defini em uma classe chamada Gerenciador, onde eu informo o endereço da massa de dados, caso tenha necessidade de mudar a massa de lugar é só mudar o endereço que está definido lá. Com isso não precisar alterar em cada classe que for usar esse endereço.

Cara eu utilizo o dataProvider da seguinte forma:

fazendo uma leitura de um arquivo .txt, pode ser outro também (ao seu critério).
para cada linha de massa é criado um objeto da classe Dados.
que por sua vez é jogado em um array de objetos.
o data provider vai retornar esse array de objetos que será utilizado pelo método acessarGoogle da classe AcessarGoogle.
cada objeto dentro do array vai representar um loop do método acessarGoogle (lembrando que cada loop é uma linha da massa)

Um exemplo simples:

public class DataProviderTeste {

	@DataProvider(name="acessarGoogle")
	public static Object[][] acessarGoogle(){
		return new LeitorArquivo().lerMassa("d:\\teste.txt");
	}

}
public class AcessarGoogle{

	@Test(dataProvider="acessarGoogle", dataProviderClass=DataProviderTeste.class)
		public void acessarGoogle(Dados dados)throws Exception{
			//tratamento da massa
	}

}

public class Dados {
	private String[] linhaMassa;
	public Dados(int tam){
		linhaMassa=new String[tam];
	}
	public void atribuirMassa(String[] linhaMassa){
		this.linhaMassa=linhaMassa;
	}
	public String[] obterMassa(){
		return this.linhaMassa;
	}
}

Olá, por favor, pode dar outro exemplo? Ainda não compreendí muito bem.

O que vc não entendeu?

Vamos pensar que tenho o Excel: massaDeDados_usuario.xls dentro do projeto, nele sua estrutura é:

[b]Nome Senha

Andre 123
Marcos carro2
Marcia muito89
Vanessa olamundo[/b]

Como é que eu acesso o arquivo Excel e itero para pegar o nome e senha?

Como é o método lerMassa?

http://poi.apache.org/spreadsheet/quick-guide.html

[quote] @Test(dataProvider=“acessarGoogle”, dataProviderClass=DataProviderTeste.class)
public void acessarGoogle(Dados dados)throws Exception{
//tratamento da massa
} [/quote]

Entendí que a cada iteração o objeto Dados recebe valores da linha… “acredito que ele faça isso automaticamente”, mas como é que eu os acesso? Digamos
a cada iteração quero passar os valores para o método -> recebeValoresDeUsuario(usuario, senha);

[quote=andredecotia][quote] @Test(dataProvider=“acessarGoogle”, dataProviderClass=DataProviderTeste.class)
public void acessarGoogle(Dados dados)throws Exception{
//tratamento da massa
} [/quote]

Entendí que a cada iteração o objeto Dados recebe valores da linha… “acredito que ele faça isso automaticamente”, mas como é que eu os acesso? Digamos
a cada iteração quero passar os valores para o método -> recebeValoresDeUsuario(usuario, senha);[/quote]

Alguma dica?

ainda não utilizei PageObjects

posso sugerir que chame outro métdo que realize a ação desejada, passando os valores pretendidos.

Na verdade gostaria de saber como é que você usar esse método na prática:

public void acessarGoogle(Dados dados)
String massa[]=dados.obterMassa();
int j=-1;
if(!massa[++j].equals("")){
    selenium.type("campo","valor");   
}
if(!massa[++j].equals("")){
   selenium.type("campo2","valor2");
}

//forma bem estruturada, mas eficiente.