JUnit

14 respostas
L

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.

14 Respostas

M

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

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

D

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

M

Boa mausexdd,

Esse blog é uma referencia muito boa !

L

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

M

bota boa nisso kAOEPKaepoAKE

Quando eu estuda tudo que tem lá … 8)

L

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;
}
L
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>
L

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");
        		
    }

}
L
Lincolntec:
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");
        		
    }

}

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.

L

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

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

L

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!

L

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

L

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.

P

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

Criado 30 de janeiro de 2012
Ultima resposta 12 de fev. de 2012
Respostas 14
Participantes 5