Understanding unit tests in errai
magick93 Jul 28, 2013 8:07 AMHi
I'm trying to learn how to write unit tests in gwt and in particular errai.
Ive been studying some examples on the errai github repo, for example https://github.com/errai/errai/tree/4cf20f4d79a06494f022a20adf74a47d4126eebe/errai-ui/src/test/java/org/jboss/errai/ui/test/handler/client.
In my attempt, I am getting the following error. Can anyone help to educate me into how to write tests for errai?
com.google.gwt.junit.JUnitFatalLaunchException: The test class 'app.Test.RuleHeaderTest' was not found in module 'app.Test.RuleHeaderTest'; no compilation unit for that type was seen
at com.google.gwt.junit.JUnitShell.checkTestClassInCurrentModule(JUnitShell.java:695)
at com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:1261)
at com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:1228)
at com.google.gwt.junit.JUnitShell.runTest(JUnitShell.java:606)
at com.google.gwt.junit.client.GWTTestCase.runTest(GWTTestCase.java:441)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at com.google.gwt.junit.client.GWTTestCase.run(GWTTestCase.java:296)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
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)
My test is:
package app.Test;
import java.util.HashMap;
import java.util.Map;
import org.jboss.errai.enterprise.client.cdi.AbstractErraiCDITest;
import org.jboss.errai.ioc.client.container.IOC;
import org.junit.Test;
import app.client.local.rule.RuleHeader;
import app.client.shared.datamodel.Rule;
import app.client.shared.datamodel.RuleSubType;
import app.client.shared.datamodel.RuleType;
public class RuleHeaderTest extends AbstractErraiCDITest {
@Override
public String getModuleName() {
return getClass().getName().replaceAll("client.*$", "app");
}
@Test
public void testRuleHeaderBinding(){
final RuleHeaderTestApp app = IOC.getBeanManager().lookupBean(RuleHeaderTestApp.class).getInstance();
assertNotNull(app.getComponent());
Rule rule = new Rule();
rule.setName("new name");
rule.setContent("hello world");
RuleHeader header =new RuleHeader();
header.setModel(rule);
}
}
package app.Test;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.jboss.errai.ioc.client.api.EntryPoint;
import app.client.local.rule.RuleHeader;
import com.google.gwt.user.client.ui.RootPanel;
@EntryPoint
public class RuleHeaderTestApp {
@Inject
private RootPanel root;
@Inject
RuleHeader component;
public RuleHeader getComponent() {
return component;
}
@PostConstruct
public void setup() {
root.add(component);
System.out.println(root.getElement().getInnerHTML());
}
}