Ciao a tutti, sono nuovo con Junit in generale, la versione che sto utilizzando è la 4.6, la quale include la libreria Hamcrest.
Praticamente il problema è che non ho nessun errore legato al fallimento di un assertion, mentre invece sono certo che il risultato dovrebbe essere l'opposto contrario. Il debug che ho inserito conferma che ce una rottura del codice, il problema è che non ci sono eccezzioni di nessun tipo, come se il programma uscisse senza problemi.
L'assertion incriminato è
assertThat(Main.expectedResult,equalTo(returnedObj ));
logger.info("[testUserExistMethod] Test passed.");

ma sono sicuro che anche i precedenti non funzionano correttamente, al momento passano senza errori perchè effettivamente il test è positivo.


Come già detto sono nuovo e ho bisogno di una mano.
Grazie in anticipo.

Main.class
...
if (obj.equalsIgnoreCase("user")) {
if (action.equalsIgnoreCase("create")) {
usr = xstreamHelp.getMockUser();
if (subAction.equalsIgnoreCase("new")) {
expectedResult = true;
org.junit.runner.JUnitCore.runClasses(ObjectConsis tency.class, JunitUserActions.class);
}else Main.usage();
} else {
Main.usage();
}
} else {
Main.usage();
}
...
JunitUserActions.class
public class JunitUserActions extends Init {

private Logger logger;
private Object[] remMthParam;
private Object returnedObj;

@Before
public void setUp() {
super.setUp();
logger = Logger.getLogger(getClass().getName());
}

@Test
public void testUserExistMethod() throws ServiceLocatorException {
remMthParam = new Object[]{Main.usr.getUsername(), Main.usr.getPassword(), Main.usr.getDomain()};
logger.debug("[testUserExistMethod] Start test.");
returnedObj = super.getEjb().invokeRemoteMethod("userExist", remMthParam);
logger.debug("[testUserExistMethod] Object returned from remote EJB interface.");
assertThat(returnedObj, notNullValue());
logger.debug("[testUserExistMethod] Object is not null.");
assertThat(returnedObj, is(java.lang.Boolean.class));
logger.debug("[testUserExistMethod] Object class name: " + returnedObj.getClass().getCanonicalName());
assertThat(Main.expectedResult,equalTo(returnedObj ));
logger.info("[testUserExistMethod] Test passed.");
}
}
Init.java
public class Init {

private Logger logger;
private ServiceLocator ejb;

@Before
public void setUp() {
logger = Logger.getLogger(getClass().getName());

try {
ejb = ServiceLocator.getInstance();
} catch (ServiceLocatorException ex) {
logger.error("[Init] " + ex.getMessage());
}


protected static void listBindings(InitialContext ctx) {
try {
NamingEnumeration ne = ctx.list(".");
while (ne.hasMore()) {
NameClassPair obj = (NameClassPair) ne.next();
System.out.println("[listBindings] Object key : " + obj.getName());
System.out.println("[listBindings] Object type : " + obj.getClassName());
}
} catch (NamingException ex) {
System.err.println("[listBindings] " + ex.getMessage());
System.exit(1);
}
}

// protected IdentityManagerLocal getEJBLocalInterface() {
// return this.localInterface;
// }

public ServiceLocator getEjb() {
return ejb;
}
}
Output console
0 [main] DEBUG eu.virtualLab.security.user.test.util.XStreamHelpe r - [getMockUser]
eu.virtualLab.security.user.entity.User[id=1]
eu.virtualLab.security.user.entity.User[username=alessandro]
155 [main] DEBUG eu.virtualLab.security.user.test.util.ServiceLocat or - [ServiceLocator] ejb.properties file succesfully loaded.
155 [main] INFO eu.virtualLab.security.user.test.util.ServiceLocat or - [ServiceLocator] EJB properties found.
182 [main] INFO eu.virtualLab.security.user.test.util.ServiceLocat or - [ServiceLocator] JNDI Context set.
183 [main] DEBUG eu.virtualLab.security.user.test.ObjectConsistency - [testEJBClass] Start test.
195 [main] DEBUG eu.virtualLab.security.user.test.JunitUserActions - [testUserExistMethod] Start test.
195 [main] DEBUG eu.virtualLab.security.user.test.util.ServiceLocat or - [setEjbObj] Looking up the EJB interface from context...
195 [main] DEBUG eu.virtualLab.security.user.test.util.ServiceLocat or - [setEjbObj] JNDI IdentityManagerBean/remote
523 [main] INFO eu.virtualLab.security.user.test.util.ServiceLocat or - [setEjbObj] EJB found!
523 [main] DEBUG eu.virtualLab.security.user.test.util.ServiceLocat or - [invokeRemoteMethod] Got EJB object.
524 [main] DEBUG eu.virtualLab.security.user.test.util.ServiceLocat or - [setEjbClass] EJB class loading...
524 [main] DEBUG eu.virtualLab.security.user.test.util.ServiceLocat or - [setEjbClass] EJB class succesfully loaded: eu.virtualLab.security.user.ejb.IdentityManagerRem ote
524 [main] INFO eu.virtualLab.security.user.test.util.ServiceLocat or - [getRemoteMethod] EJB method succesfully found.
524 [main] DEBUG eu.virtualLab.security.user.test.util.ServiceLocat or - [invokeRemoteMethod] Got EJB method.
582 [main] DEBUG org.jboss.security.SecurityAssociation - Using ThreadLocal: false
687 [main] DEBUG org.jboss.remoting.transport.socket.MicroSocketCli entInvoker - SocketClientInvoker[8ceeea, socket://127.0.0.1:3873] constructed
688 [main] DEBUG org.jboss.remoting.MicroRemoteClientInvoker - SocketClientInvoker[8ceeea, socket://127.0.0.1:3873] connecting
688 [main] DEBUG org.jboss.remoting.MicroRemoteClientInvoker - SocketClientInvoker[8ceeea, socket://127.0.0.1:3873] connected
746 [main] DEBUG org.jboss.remoting.transport.socket.ClientSocketWr apper - reset timeout: 0
777 [main] DEBUG org.jboss.remoting.InvokerRegistry - removed SocketClientInvoker[8ceeea, socket://127.0.0.1:3873] from registry
777 [main] DEBUG org.jboss.remoting.transport.socket.MicroSocketCli entInvoker - SocketClientInvoker[8ceeea, socket://127.0.0.1:3873] disconnecting ...
779 [main] DEBUG org.jboss.remoting.transport.socket.SocketWrapper - ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=52582].f0b7f8] closing
779 [main] DEBUG eu.virtualLab.security.user.test.util.ServiceLocat or - [invokeRemoteMethod] EJB method invoked.
779 [main] DEBUG eu.virtualLab.security.user.test.JunitUserActions - [testUserExistMethod] Object returned from remote EJB interface.
779 [main] DEBUG eu.virtualLab.security.user.test.JunitUserActions - [testUserExistMethod] Object is not null.
779 [main] DEBUG eu.virtualLab.security.user.test.JunitUserActions - [testUserExistMethod] Object class name: java.lang.Boolean
logger.info("[testUserExistMethod] Test passed.");
Non è loggato, codice spezzato!