2017-10-10 2 views
1

J'ai une suite de tests qui est configurée dans Java Gradle. Les tests Junit implique io fichier écriture/lecture Lorsque j'utilise machine à la fenêtre et gradlew.bat test, tous les tests passent. Cependant, si j'essaie d'exécuter la même suite de tests dans la machine Linux, tout le test implique l'écriture du fichier io échoue. Je pense que le problème est cette permission. Y a-t-il un moyen de le réparer?Comment donner une autorisation d'écriture pour un test Junit en utilisant gradle

Comment j'ai créé le fichier:

File file = new File(String.format("./%s/e2eTest/Delete/Hello.txt", root)); 

    file.createNewFile(); 

    FileWriter writer = new FileWriter(file); 
    writer.write("Test data\n"); 
    writer.close(); 

Comment puis-je accéder au fichier:

Unirest.delete(String.format("http://localhost:%d/e2etest/delete/hello.txt",port)).asString().getStatus(); 

côté serveur:

File f = new File(root+request.getUri()) 
+0

@janos la sortie est juste décalage JUnit assert en raison d'un fichier non-existence (le fichier est créé dans la configuration de test) – SwordW

+0

Afficher la création de fichiers et l'accès s'il vous plaît. – ChiefTwoPencils

+0

@ChiefTwoPencils ajouté – SwordW

Répondre

1

Pour vous assurer que vous avez accès en écriture, je suggère que vous créez des fichiers sous le dossier spécifié par la propriété système java.io.tmpdir.

Un moyen simple de faire cela est dans un test de junit est en utilisant la règle TemporaryFolder qui supprimera tout après le test est terminé.

par exemple:

public class MyTest { 
    @Rule 
    public TemporaryFolder folder = new TemporaryFolder(); 

    @Test 
    public void myFileTest() throws IOException { 
     File testFile = folder.newFile("myfile.txt"); 
     doStuff(testFile); 
    } 
} 

Voir aussi File.createTempFile(...)