2017-03-20 6 views
1

Ich versuche, eine JSON-Datei-Ressource zu bekommen, um es zu verwenden, um ein Java-Objekt zu erstellen. Wenn ich versuche, meinen Code in der Intellij auszuführen, habe ich kein Problem, aber wenn ich mit mvn test laufe, erhalte ich den folgenden Fehler.Testdatei-Ressource mit Maven erhalten

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project cadastur-backend-business: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: There was an error in the forked process 
[ERROR] java.lang.RuntimeException: Unable to create test class 'guiaVOTemplate.json' 
[ERROR] at org.apache.maven.surefire.util.DefaultScanResult.loadClass(DefaultScanResult.java:135) 
[ERROR] at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:95) 
[ERROR] at org.apache.maven.surefire.junit4.JUnit4Provider.scanClassPath(JUnit4Provider.java:222) 
[ERROR] at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:107) 
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203) 
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155) 
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) 
[ERROR] Caused by: java.lang.ClassNotFoundException: guiaVOTemplate.json 
[ERROR] at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
[ERROR] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
[ERROR] at org.apache.maven.surefire.util.DefaultScanResult.loadClass(DefaultScanResult.java:131) 
[ERROR] ... 6 more 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :cadastur-backend-business 

Das Projekt hat die Folge Struktur:

Project Structure Image

Und über den Code, wo ich versuche, die Datei und wandeln die json zu Java-Objekt zu lesen.

package br.gov.mtur.cadastur.builder; 

import br.gov.mtur.cadastur.vo.*; 
import com.fasterxml.jackson.databind.ObjectMapper; 
import java.io.IOException; 

public class GuiaVOBuilder { 

    private GuiaVO guia; 

    public GuiaVOBuilder() { 
     this.guia = new GuiaVO(); 
    } 

    public GuiaVOBuilder comId(Integer id) { 
     guia.setId(id); 
     return this; 
    } 

    public GuiaVOBuilder comPessoaFisica(PessoaFisicaVO pessoaFisica) { 
     guia.setPessoaFisica(pessoaFisica); 
     return this; 
    } 

    ... //Builder methods 

    public GuiaVO build(){ 
     return guia; 
    } 

    public GuiaVO buildGuiaCompleto() throws IOException { 
     return new ObjectMapper().readValue(GuiaVOBuilder.class.getResource("/guiaVOTemplate.json"), GuiaVO.class); 
    } 
} 
+0

Versuchen Sie, die Datei 'guiaVOTemplate.json' nach' src \ main \ resources' zu kopieren und zu überprüfen, ob sie funktioniert. –

+0

Danke @RITZXAVI, jetzt funktioniert es für mich, aber weißt du, warum ich die JSON-Datei nicht in 'src \ test \ resources' setzen kann? –

+0

sicher. Wie hat es übrigens funktioniert? –

Antwort

0

Kopieren Sie die Datei guiaVOTemplate.json zu src\main\resources und es sollte funktionieren.

0

Ich finde meinen Fehler, in der Hauptsache pom.xml, das Maven-Surefire-Plugin wurde alle Dateien einschließlich, so dass ich bekam Unable to create test class 'guiaVOTemplate.json'. So könnte ich das auflösen, indem ich Dateien mit der Extension .json in die Exclude-Liste setze. Und meine guiaVOTemplate.json bleibt in src/test/resources.