web-dev-qa-db-fra.com

JUnit prend-il en charge les fichiers de propriétés pour les tests?

J'ai des tests JUnit devant être exécutés dans différents environnements de transfert. Chacun des environnements a des identifiants de connexion différents ou d'autres aspects spécifiques à cet environnement. Mon plan est de passer une variable d’environnement dans VM pour indiquer quel environnement utiliser. Puis utilisez cette variable pour lire dans un fichier de propriétés.

JUnit dispose-t-il de fonctionnalités permettant de lire un fichier .properties?

22
Dave Jensen

Java intègre des fonctionnalités permettant de lire un fichier .properties et JUnit intègre des fonctionnalités permettant d'exécuter du code d'installation avant d'exécuter une suite de tests.

Propriétés de lecture Java:

Properties p = new Properties();
p.load(new FileReader(new File("config.properties")));

documentation de démarrage junit

mettez ces 2 ensemble et vous devriez avoir ce dont vous avez besoin.

27
pstanton

Il est généralement préférable d'utiliser des fichiers relatifs aux chemins de classes pour les propriétés de test d'unité, afin qu'ils puissent s'exécuter sans se soucier des chemins de fichiers. Le chemin peut être différent sur votre boîte de dev, sur le serveur de compilation ou ailleurs. Cela fonctionnera aussi depuis ant, maven, Eclipse sans modifications.

private Properties props = new Properties();

InputStream is = ClassLoader.getSystemResourceAsStream("unittest.properties");
try {
  props.load(is);
}
catch (IOException e) {
 // Handle exception here
}

placer le fichier "unittest.properties" à la racine du chemin de classe.

25
scott m gardner
//
// Load properties to control unit test behaviour.
// Add code in setUp() method or any @Before method (JUnit4).
//
// Corrected previous example: - Properties.load() takes an InputStream type.
//
import Java.io.File;
import Java.io.FileInputStream;        
import Java.util.Properties;

Properties p = new Properties();
p.load(new FileInputStream( new File("unittest.properties")));

// loading properties in XML format        
Properties pXML = new Properties();
pXML.loadFromXML(new FileInputStream( new File("unittest.xml")));
1
edvox1138

Ne pouvez-vous pas simplement lire le fichier de propriétés dans votre méthode d'installation?

0
Nate

Cette réponse est destinée à aider ceux qui utilisent Maven.

Je préfère également utiliser le classloader local et fermer mes ressources.

  1. Créez votre fichier de propriétés de test, appelé /project/src/test/resources/your.properties.

  2. Si vous utilisez un IDE, vous devrez peut-être marquer/src/test/resources en tant que "racine de test des ressources".

  3. ajouter du code:


// inside a YourTestClass test method

try (InputStream is = loadFile("your.properties")) {
    p.load(new InputStreamReader(is));
}

// a helper method; you can put this in a utility class if you use it often

// utility to expose file resource
private static InputStream loadFile(String path) {
    return YourTestClass.class.getClassLoader().getResourceAsStream(path);
}
0
Barett