Olá, amigos, estou tentando acessar meu pool de conexões (JNDI) utilizando o Junit, mas está difícil, estou há dias, já tentei de diversas maneiras e não consigo.
Hoje, meu código está assim:
[code]public class NewEmptyJUnitTest {
public static EntityManager em;
public NewEmptyJUnitTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
try {
// Create initial context
System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.naming.java.javaURLContextFactory");
System.setProperty(Context.URL_PKG_PREFIXES,
"org.apache.naming");
InitialContext ic = new InitialContext();
ic.createSubcontext("java:");
ic.createSubcontext("java:/comp");
ic.createSubcontext("java:/comp/env");
ic.createSubcontext("java:/comp/env/jdbc");
Properties properties = new Properties();
properties.setProperty("url", "jdbc:mysql://sitekkk.net.br/schema");
properties.setProperty("maxActive", "10");
properties.setProperty("maxIdle", "8");
properties.setProperty("minIdle", "10");
properties.setProperty("maxWait", "10");
properties.setProperty("testOnBorrow", "true");
properties.setProperty("username", "user");
properties.setProperty("password", "kk123");
properties.setProperty("validationQuery", "SELECT 1");
properties.setProperty("removeAbandoned", "true");
properties.setProperty("removeAbandonedTimeout", "1");
properties.setProperty("logAbandoned", "true");
DataSource ds = BasicDataSourceFactory.createDataSource(properties);
ic.bind("java:/comp/env/jdbc/schema", ds);
} catch (NamingException ex) {
Logger.getLogger(NewEmptyJUnitTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
[/code]Mas retorna o seguinte erro:
[code]
junit.framework.TestListener: addError(br.com.incard.testes.NewEmptyJUnitTest, org/apache/commons/pool/impl/GenericObjectPool)
Tests run: 0, Failures: 0, Errors: 1, Time elapsed: 25,163 sec
Testcase: br.com.incard.testes.NewEmptyJUnitTest: Caused an ERROR
org/apache/commons/pool/impl/GenericObjectPool
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
at org.apache.commons.dbcp.BasicDataSourceFactory.createDataSource(BasicDataSourceFactory.java:167)
at br.com.incard.testes.NewEmptyJUnitTest.setUpClass(NewEmptyJUnitTest.java:71) // aqui no caso é linha 37
Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[/code]O jar do commons-dbcp-1.4 já está configurado nas bibliotecas tanto do projeto quanto do teste.
Meu sistema web funciona perfeitamente, mas eu simplesmente não consigo acessar minha base de dados a partir do jUnit. Há alguma estratégia diferente para conseguir acessar a base de dados a partir de Junit? Eu uso MySQL
Obrigado!