Entendi.
Talvez seja interessante você separar o seu EJB da camada de acesso ao banco, através do padrão DAO. Assim, dentro do SessionBean você pode construir o DAO através de um Factory Method e para testes unitários você poderia injetá-lo usando um setDAO.
A vantagem é que você pode fazer o mock do DAO e, de fato, fazer o teste unitário da sua camada de EJB.
Essa é a arquitetura que eu uso no meu projeto atual. Seria mais ou menos assim
- Session Bean, com o Factory Method para retornar o DAO
@Stateless
public class SessionBeanQualquer implements MinhaInterfaceQualquer {
private DAO meuDAO; //Interface do DAO
//recupera o dao através de um Factory Method
public DAO getDAO(String parametro) {
if (meuDAO == null) { //ou seja, eu não tenho o DAO, vamos cria-lo
meuDAO = DAOFactory.getDao(Parametro); //Cria o DAO pela fábrica
return meuDAO;
} else {
return this.meuDAO;
}
}
//método set para injetar o DAO nos testes unitario.
public void setDAO(DAO dao) {
this.meuDAO = dao;
}
//método qualquer do sessionBean
public List<AlgumObjetoPOJO> fazAlgumaCoisa(Long idAlgumaCoisa) {
//Supondo que você queria uma Lista de AlgumaCoisa
List<blablabla> getDAO.getListBLABLABLABLA(idAlgumaCoisa); //nao chamo o DAO diretamente, mas sim o factory method
//continua as operações aqui
}
}
Note que na criação do DAO, a gente testa se ele já foi previamente criado ou não. Use uma Factory para evitar acoplamento 
Agora na classe do Junit, simplesmente faça um Mock da interface DAO. Pode injetá-la através do set
public class TestSessionBeanQualquer.....{
//Cria o Mock
//Adiciona a expectativa
public void testBuscaBlablabla() {
meuSessionBean.setDAO(mock);
meySessionBean.fazAlgumaCoisa....
}
}
Não sei se ficou claro, mas a idéia é mais ou menos assim.
Espero que tenha ajudado