Comment passer les propriétés -D System lors des tests sur Eclipse?

94

Je développe sur Eclipse sous Windows et le code est déployé sur Unix. Je récupère les valeurs de propriété système en utilisant System.getProperty ("key") ... Comment puis-je transmettre cela dans Eclipse pour ne pas avoir à modifier le code et cela fonctionne sur Eclipse pour le débogage?

Aucune suggestion?

Devang Kamdar
la source

Réponses:

134

Exécuter -> Exécuter les configurations, sélectionner le projet, deuxième onglet: «Arguments». La case du haut est pour votre programme, la case du bas est pour les arguments VM, par exemple -Dkey=value.

Bombe
la source
1
où est-ce si vous essayez d'exécuter une application Android?
user678392
pourquoi dois-je utiliser «D» comme préfixe?
Manticore
28
Si vous êtes aussi épais que moi - les arguments -D vont dans la case du bas pour les arguments VM , pas dans la case du haut pour les arguments de votre programme. / soupir
ruffin
2
La case supérieure est pour le String[] argspassé à la mainméthode.
jaco0646
7
Existe-t-il un moyen de définir cela par défaut, de sorte que vous n'ayez pas à le saisir manuellement à plusieurs reprises pour de nombreux tests?
Stewart
44

Vous pouvez utiliser java System.properties, pour les utiliser depuis eclipse, vous pouvez:

  1. Ajoutez -Dlabel="label_value"les arguments VM du test Run Configurationcomme ceci:

eclipse_vm_config

  1. Ensuite, lancez le test:

    import org.junit.Test;
    import static org.junit.Assert.assertEquals;
    
    public class Main {
        @Test
        public void test(){
            System.out.println(System.getProperty("label"));
            assertEquals("label_value", System.getProperty("label"));
        }
    }
  2. Enfin, il devrait réussir le test et afficher ceci dans la console:

    label_value
madx
la source
13

Vous pouvez ajouter des arguments de ligne de commande à votre configuration d'exécution. Modifiez simplement la configuration d'exécution et ajoutez -Dmyprop = valeur (ou autre) à la boîte d'arguments VM.

izb
la source
4
Si vous vouliez dire «boîte d'arguments du programme» lorsque vous avez dit «boîte d'arguments de ligne de commande» sous l'onglet Arguments - ne fonctionne pas! Doit être entré dans "VM Arguments Box" comme mentionné par Bombe ci-dessus.
Devang Kamdar
4

exécuter la configuration -> arguments -> arguments vm

(peut également être placé dans la configuration de débogage sous Configuration de débogage-> Arguments-> Arguments VM)

harry.huang
la source
1

Cela fonctionnera pour junit. pour TestNG, utilisez la commande suivante

-ea -Dmykey="value" -Dmykey2="value2"
Aniruddha Ghanekar
la source
0

Oui c'est comme ça:

Faites un clic droit sur votre programme, sélectionnez exécuter -> exécuter la configuration puis sur l'argument vm

-Denv=EnvironmentName -Dcucumber.options="--tags @ifThereisAnyTag"

Ensuite, vous pouvez postuler et fermer.

NiteshJain007
la source