JUnit

Ola galera!

Estou tentando fazer um projeto Web, usando jpa, jsf, estava tudo indo lindo criei o banco gerei as tabelas apartir das entidades ai chegou a hora dos testes, e num fununcia alguem pode me ajudar o erro que da quando eu rodo o teste é

javax.ejb.EJBException: No EJBContainer provider available: no provider names had been found.
at javax.ejb.embeddable.EJBContainer.reportError(EJBContainer.java:186)
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:121)
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:78)
at br.com.rep.session.test.UsuarioSessionTest.setUp(UsuarioSessionTest.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Estou utilizando o eclipse.Se alguem puder me ajudar agradeço.

Voce deve fazer os seus testes de forma incremental , RED , GREEN , REFACTOR … Talvez este tutorial possa ajudar.

http://uaihebert.com/?p=58

Quando rodar o teste voce tem que configurar para subir todo ambiente como container EJB e banco de dados…

Boa mausexdd,

Esse blog é uma referencia muito boa !

Valeu pela ajuda galera tou vendo os links acho que vai ajudar sim.Logo eu posto dizendo se deu certo ou não valeu…

bota boa nisso kAOEPKaepoAKE

Quando eu estuda tudo que tem lá … 8)

Galera não é priguiça não eu estou começando agora vou postar os codigos aqui para ficar mais facil de tentar me ajudar

[/code]

package org.persistence;

import java.io.Serializable;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name = “T_USUARIO”)
public class Usuario implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idUsuario")
private Integer idUsuario;

@Column(nullable = false)
@NotNull(message = "O campo NOME USUÁRIO não pode ser nulo!!")
@NotEmpty(message = "O campo NOME USUÁRIO não pode ser vazio!!")
private String nomeUsuario;
@Column(nullable = false)
@NotNull(message = "O campo  SENHA não pode ser nulo!!")
@NotEmpty(message = "O campo SENHA não pode ser vazio!!")
private String senha;
@Column(nullable = false)
@NotNull(message = "O campo TIPO não pode ser nulo!!")
@NotEmpty(message = "O campo TIPO não pode ser vazio!!")
private String tipo;

public void setNomeUsuario(String param) {
	this.nomeUsuario = param;
}

public String getNomeUsuario() {
	return nomeUsuario;
}

public void setSenha(String param) {
	this.senha = param;
}

public String getSenha() {
	return senha;
}

public void setTipo(String param) {
	this.tipo = param;
}

public String getTipo() {
	return tipo;
}

public void setIdUsuario(Integer param) {
	this.idUsuario = param;
}

public Integer getIdUsuario() {
	return idUsuario;
}

/**
 * @return the serialversionuid
 */
public static long getSerialversionuid() {
	return serialVersionUID;
}

[/code]


package br.com.rep.session;

import java.util.List;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;

import org.persistence.Usuario;

import br.com.rep.ejb.BasicSessionBean;

/**
 * Session Bean implementation class UserSession
 */
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class UsuarioSession extends BasicSessionBean {

	

//GET USUARIO ID
   public Usuario getIdUsuario(int idUsuario){
	   return getPojo(Usuario.class, idUsuario); 
   }
   
   //REMOVE USUARIO
   public void remove(Usuario Usuario){
	   
	   Usuario = getEm().merge(Usuario);
	   getEm().remove(Usuario);
   }
   
   //SALVA USUARIO
   public Usuario salvaUsuario(Usuario usuario){
	   getEm().persist(usuario);
	   return usuario;
   }
   
   //VERIFICA SE USUARIO ESTA LOGADO.
   public Usuario verificaUsuarioOk(String nomeUsuario, String senha){
	   try {
		return getPojo(Usuario.class, "select usuario from Usuario usuario where usuario.name =?1 and us.password = ?2", nomeUsuario, senha);

	} catch (Exception e) {
		// TODO: handle exception
		return null;
	}
   }
	  
	   //LISTA TODOS USUARIOS DO SISTEMA.
	   public List<Usuario> getTodosUsuarios(){
		   return getList(Usuario.class, "select * from usuario Usuario order by usuario.nomeUsuario");
	   }
	   
	   
	   //LISTA O USUARIO POR NOME
	   public List<Usuario> getUsuarioPorNome(String nomeCli){
		   return getList(Usuario.class, "select from usuario Usuario where usuario.name ?1", "%" + nomeCli + "%");
		   
	   }
	   
	   //ALTERA O USUARIO
	   public Usuario setUsuario(Usuario usuario){
		   getEm().merge(usuario);
		   return usuario;
		   
	   }

	
  


}


PersistenceUnit


<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="rep" transaction-type="RESOURCE_LOCAL">
		<class>org.persistence.Cadastro</class>
		<class>org.persistence.Equipamento</class>
		<class>org.persistence.Ocorrencia</class>
		
		
		
	</persistence-unit>
</persistence>

Classe de Teste


package br.com.rep.session.test;

import static org.junit.Assert.*;

import java.util.List;

import javax.ejb.embeddable.EJBContainer;
import javax.naming.NamingException;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.persistence.Usuario;

import br.com.rep.session.UsuarioSession;

public class UsuarioSessionTest {

	public static EJBContainer container;
	public static Integer idUsuario;
	
	@Before
	public void setUp() throws Exception {
		container = javax.ejb.embeddable.EJBContainer.createEJBContainer();
	}

	@After
	public void tearDown() throws Exception {
	}

	public void testGetIdUsuario() {
		fail("Not yet implemented"); // TODO
	}

	public void testRemove() {
		fail("Not yet implemented"); // TODO
	}

	@Test
	public void testSalvaUsuario() throws NamingException {
		Usuario usuario = new Usuario();
		usuario.setNomeUsuario("Bruno");
		usuario.setSenha("123456");
		usuario.setTipo("a");
		UsuarioSession instance = getUserSession(); 
		Usuario result = instance.salvaUsuario(usuario);
		
		
	        idUsuario = result.getIdUsuario();
	        assertTrue(result.getIdUsuario().intValue() > 0);

	}

	public void testVerificaUsuarioOk() {
		fail("Not yet implemented"); // TODO
	}

	@Test
	public void testGetTodosUsuarios() throws NamingException {
		System.out.println("getAllUsers");
		
		
        UsuarioSession instance = getUserSession();
        List<Usuario> result = instance.getTodosUsuarios();
        assertNotNull(result);
        assertTrue(result.size() >= 1);
	}

	public void testGetUsuarioPorNome() {
		fail("Not yet implemented"); // TODO
	}

	public void testSetUsuario() {
		fail("Not yet implemented"); // TODO
	}

	private UsuarioSession getUserSession() throws NamingException {
        return (UsuarioSession) container.getContext().lookup("rep/UsuarioSession");
        		
    }

}



[quote=Lincolntec]Classe de Teste

[code]

package br.com.rep.session.test;

import static org.junit.Assert.*;

import java.util.List;

import javax.ejb.embeddable.EJBContainer;
import javax.naming.NamingException;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.persistence.Usuario;

import br.com.rep.session.UsuarioSession;

public class UsuarioSessionTest {

public static EJBContainer container;
public static Integer idUsuario;

@Before
public void setUp() throws Exception {
	container = javax.ejb.embeddable.EJBContainer.createEJBContainer();
}

@After
public void tearDown() throws Exception {
}

public void testGetIdUsuario() {
	fail("Not yet implemented"); // TODO
}

public void testRemove() {
	fail("Not yet implemented"); // TODO
}

@Test
public void testSalvaUsuario() throws NamingException {
	Usuario usuario = new Usuario();
	usuario.setNomeUsuario("Bruno");
	usuario.setSenha("123456");
	usuario.setTipo("a");
	UsuarioSession instance = getUserSession(); 
	Usuario result = instance.salvaUsuario(usuario);
	
	
        idUsuario = result.getIdUsuario();
        assertTrue(result.getIdUsuario().intValue() > 0);

}

public void testVerificaUsuarioOk() {
	fail("Not yet implemented"); // TODO
}

@Test
public void testGetTodosUsuarios() throws NamingException {
	System.out.println("getAllUsers");
	
	
    UsuarioSession instance = getUserSession();
    List<Usuario> result = instance.getTodosUsuarios();
    assertNotNull(result);
    assertTrue(result.size() >= 1);
}

public void testGetUsuarioPorNome() {
	fail("Not yet implemented"); // TODO
}

public void testSetUsuario() {
	fail("Not yet implemented"); // TODO
}

private UsuarioSession getUserSession() throws NamingException {
    return (UsuarioSession) container.getContext().lookup("rep/UsuarioSession");
    		
}

}

[/code][/quote]

No metodo getUserSession, não sei se o caminho está certo, ou melhor não sei o que é este lookup, se alguem souber me dizer agradeço, derrepente é até por isto q não está funcionando.

Galera valeu pela indicacao do material parece que gora vai funcar!

Tou indo pra casa vou fusar quando chegar dp posto aqui novamente obrigado.

Galera so pensei que fosse funcionar porque tentei e até agora nada. Tem alguem que poderia ser mais claro ainda não consegui entender porque está dando este erro!

Galera não sei se ajuda ta, mais vou descrever o que estou usando. jpa,EclipseLink, glassfish 3.1.1

Galera não sei se ajuda ta, mais vou descrever o que estou usando. jpa,EclipseLink, glassfish 3.1.1

*** fui tentar fazer deploy e me deu o seguinte erro!

 cannot Deploy PortalIo

Deployment Error for module: PortalIo: Error occurred during deployment: Exception while preparing the app : The persistence-context-ref-name [br.com.portalIo.ejb.BassicSessionBean/em] in module [PortalIo] resolves to a persistence unit called [PortalIo] which is of type RESOURCE_LOCAL. Only persistence units with transaction type JTA can be used as a container managed entity manager. Please verify your application… Please see server.log for more details.

[/quote]

Abra o ficheiro persistence.xml e altere o seguinte: transaction-type=“RESOURCE_LOCAL”> por transaction-type=“JTA”>