Добрый вечер. Я новичок как в jUnit, так и в EJB. Я сделал наипростейший EJB-проект с одним бином, с этим проблем не возникло. Но попытки сделать простейший тест для этого единственного бина ни к чему не привели. Я запускаю проект с помощью JBoss AS 7. Это какой-то ужас. В чем может быть ошибка? Что мне нужно сделать чтобы оно заработало? И есть немного наглая просьба: если у вас есть небольшой рабочий пример по тестированию с помощью встроенного механизма jUnit, с помощью Arquilian, с помощью Mockito - скиньте пожалуйста по всем трём или хотя бы что-то. В проекте есть бин HelloBean: Код | package com.pack;
import javax.ejb.LocalBean; import javax.ejb.Stateless;
/** * Session Bean implementation class HelloBean */ @Stateless public class HelloBean implements Hello {
public String sayHello(String name) { return "Hello " + name; }
}
|
Для этого бина есть интерфейс Hello: Код | package com.pack;
public interface Hello { String sayHello(String name); }
|
Я написал тест для этого бина: Код | package com.pack;
import static org.junit.Assert.*;
import java.util.Date;
import javax.ejb.embeddable.EJBContainer; import javax.naming.InitialContext; import javax.naming.NamingException;
import org.junit.Test;
public class HelloTest {
@Test public void test() throws NamingException { EJBContainer container = EJBContainer.createEJBContainer();
// Note that global naming isn't working yet. InitialContext ctx = new InitialContext(); Hello bean = (Hello) ctx.lookup("HelloBean/local");
String now = new Date().toString(); String actual = bean.sayHello(now);
assertEquals("Hello " + now, actual);
container.close(); } }
|
Но этот тест выдает следующую ошибку: Код | javax.ejb.EJBException: Unable to instantiate container with factories [] at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBCont ainer.java:97) at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBCont ainer.java:75) at com.pack.HelloTest.test(HelloTest.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(Refl ectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr ameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate( InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271 ) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit 4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit 4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java: 63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java :236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java: 53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java: 229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test Execution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R emoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( RemoteTestRunner.java:197)
|
|