也许有人可以帮助我,我试图写我的第一个gwt单元测试,但这是问题,当我运行我的测试与maven我得到这个错误:
> java.lang.NoClassDefFoundError: com/google/gwt/dev/cfg/Condition at > com.google.gwt.junit.client.GWTTestCase.createStrategy(GWTTestCase.java:340) > at > com.google.gwt.junit.client.GWTTestCase.getStrategy(GWTTestCase.java:257) > at > com.google.gwt.junit.client.GWTTestCase.getSyntheticModuleName(GWTTestCase.java:275) > at > com.google.gwt.junit.client.GWTTestCase.setName(GWTTestCase.java:321) > at junit.framework.TestSuite.createTest(TestSuite.java:63) at > junit.framework.TestSuite.addTestMethod(TestSuite.java:283) at > junit.framework.TestSuite.<init>(TestSuite.java:146) at > org.junit.internal.runners.JUnit38ClassRunner.<init>(JUnit38ClassRunner.java:71) > at > org.junit.internal.builders.JUnit3Builder.runnerForClass(JUnit3Builder.java:14) > at > org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) > at > org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) > at > org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) > at > org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) > at > org.apache.maven.surefire.junit4.JUnit4TestSet.<init>(JUnit4TestSet.java:45) > at > org.apache.maven.surefire.junit4.JUnit4DirectoryTestSuite.createTestSet(JUnit4DirectoryTestSuite.java:56) > at > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.locateTestSets(AbstractDirectoryTestSuite.java:96) > at > org.apache.maven.surefire.Surefire.createSuiteFromDeFinition(Surefire.java:209) > at org.apache.maven.surefire.Surefire.run(Surefire.java:156) at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:601) at > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) > at > org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009) > Caused by: java.lang.classNotFoundException: > com.google.gwt.dev.cfg.Condition 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)
这是我的testCase:
public class TelekanalServiceImpltest extends GWTTestCase { @Override public String getModuleName() { // Todo Auto-generated method stub return "com.karq.tvkava.tvkavaJUnit"; } public void testTelekanalService(){ // Create the service that we will test. TelekanalServiceAsync telekanalService = GWT.create(TelekanalService.class); ServiceDefTarget target = (ServiceDefTarget) telekanalService; target.setServiceEntryPoint(GWT.getModuleBaseURL() + "tvkava/telekanalService"); // Since RPC calls are asynchronous,we will need to wait for a response // after this test method returns. This line tells the test runner to wait // up to 10 seconds before timing out. delayTestFinish(10000); //Test data Telekanal telekanal = new Telekanal(); telekanal.setNimetus("test"); telekanal.setKirjeldus("see on test"); // Send a request to the server. telekanalService.saveOrUpdateTelekanal(telekanal,new AsyncCallback<Void>() { public void onFailure(Throwable caught) { // The request resulted in an unexpected error. fail("Request failure: " + caught.getMessage()); } public void onSuccess(Void result) { // Verify that the response is correct. boolean isSaved = true; assertTrue(isSaved); // Now that we have received a response,we need to tell the test runner // that the test is complete. You must call finishtest() after an // asynchronous test finishes successfully,or the test will time out. finishtest(); } }); } }
在com.karq.tvkava中,我有一个名为tvKavaJUnit.gwt.xml的模块文件
<?xml version="1.0" encoding="UTF-8"?> <module> <!-- Inherit our applications main module. --> <inherits name='com.karq.tvkava.tvkava'/> <!-- Specify the path to any remote services. --> <servlet path="/tvkava/telekanalService" class="com.karq.tvkava.server.services.TelekanalServiceImpl" /> </module>
而且我的主要模块在com.karq.tvkava和它的名为tvkava.gwt.xml
<?xml version="1.0" encoding="UTF-8"?> <module rename-to='tvkava'> <!-- Inherit the core Web Toolkit stuff. --> <inherits name='com.google.gwt.user.User'/> <!-- Inherit the default GWT style sheet. You can change --> <!-- the theme of your GWT application by uncommenting --> <!-- any one of the following lines. --> <inherits name='com.google.gwt.user.theme.standard.Standard'/> <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> --> <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> --> <!-- Other module inherits --> <inherits name='net.sf.gilead.Gilead4Gwt'/> <source path='client/service' /> <source path='shared'/> <!-- Specify the app entry point class. --> <entry-point class='com.karq.tvkava.client.tvkava'/> <!-- Specify the paths for translatable code --> <source path='client'/> <source path='shared'/> </module>
解决方法
我设法使Surefire与我的GWT测试无缝工作,输出正确的结果,并在出现测试失败时失败.在我的POM中,我已经设置了Surefire:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> <configuration> <additionalClasspathelements> <additionalClasspathelement>${project.build.sourceDirectory}</additionalClasspathelement> <additionalClasspathelement>${project.build.testSourceDirectory}</additionalClasspathelement> </additionalClasspathelements> <useSystemClassLoader>true</useSystemClassLoader> <useManifestOnlyJar>false</useManifestOnlyJar> <forkMode>always</forkMode> <systemProperties> <property> <name>gwt.args</name> <value>-out www-test</value> </property> </systemProperties> </configuration> </plugin>
您需要定义变量project.build.sourceDirectory和project.build.testSourceDirectory.对我而言,它们类似于< project-name> / src / main / java和< project-name> / src / test / java.
我也不得不添加依赖于gwt-dev:
<dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-dev</artifactId> <version>2.4.0</version> <scope>provided</scope> </dependency>
原文地址:https://www.jb51.cc/java/122157.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。