2011-08-04 17 views
9

हो सकता है कि किसी ने मेरी मदद कर सकते हैं, मैं अपनी पहली gwt इकाई परीक्षण लिखने के लिए कोशिश कर रहा हूँ, लेकिन यहाँ समस्या है, जब मैं Maven मैं के साथ मेरी परीक्षण चलाने इस त्रुटि मिलती है:GWT परीक्षण त्रुटि NoClassDefFoundError: com/google/gwt/dev/cfg/स्थिति

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> 
:

> 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.&lt;init&gt;(TestSuite.java:146) at 
> org.junit.internal.runners.JUnit38ClassRunner.&lt;init&gt;(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.&lt;init&gt;(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 है

और बिल्कुल मैं

<?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> 
+0

आप इस हल किया? –

उत्तर

4

तुम दोनों gwt-user.jar और gwt-dev.jar classpath पर है com.karq.tvkava में मुख्य मॉड्यूल और उसके बुलाया tvkava.gwt.xml है?

+0

हां, मेरे पास मेरे क्लासपाथ में हैं। – karq

10

मैं उचित परिणाम outputting और निर्माण जब वहाँ परीक्षण विफलताओं है या नहीं, अचूक मेरी GWT परीक्षण के साथ सहजता से काम करने के लिए पाने में कामयाब रहे। मेरी पोम में, मुझे मिल गया है अचूक इसलिए की तरह सेट अप:

<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> 
5

मैं एक ही सटीक स्टैक ट्रेस और जोड़ने

<dependency> 
    <groupId>com.google.gwt</groupId> 
    <artifactId>gwt-dev</artifactId> 
    <version>${gwtVersion}</version> 
    <scope>test</scope> 
</dependency> 

यह तय किया था।

1

आपको यह त्रुटि संदेश मिल जाएगा अगर आप अचूक एक JUnit परीक्षण के रूप में एक GWTTest गए थे। चूंकि SureFire नहीं जानता कि जीडब्ल्यूटी कोड के साथ क्या करना है, आपको यह त्रुटि मिल जाएगी।

यह अचूक बताने के लिए किसी दिए गए पैटर्न के साथ सभी परीक्षणों की अनदेखी करने के लिए सबसे अच्छा है। मैं अपने सभी जीडब्ल्यूटी परीक्षणों का नाम देता हूं "SomethingGwtTest.java।" इस तरह अचूक उन्हें ध्यान नहीं देता और gwt-maven-plugin से GWT परीक्षण धावक उन्हें ऊपर उठाता है और उन्हें ठीक से चलाता है।

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <excludes> 
      <exclude>**/*GwtTest.java</exclude> 
     </excludes> 
    </configuration> 
</plugin