Como passar as propriedades do sistema -D durante o teste no Eclipse?

94

Estou desenvolvendo no Eclipse no Windows e o Code é implantado no Unix. Estou buscando os valores de propriedade do sistema usando System.getProperty ("key") ... Como faço para passar isso no Eclipse para que não tenha que modificar o código e ele funciona no Eclipse para depuração?

Alguma sugestão?

Devang Kamdar
fonte

Respostas:

134

Executar -> Executar configurações, selecionar projeto, segunda aba: “Argumentos”. A caixa superior é para seu programa, a caixa inferior é para argumentos VM, por exemplo -Dkey=value.

Bombe
fonte
1
onde fica isso se você estiver tentando executar um aplicativo Android?
user678392
por que eu tenho que usar 'D' como prefixo?
Manticore
28
Se você for tão grosso quanto eu - os argumentos -D vão na caixa inferior para os argumentos VM , não na caixa superior para os argumentos do seu programa. / suspiro
ruffin de
2
A caixa superior é para o String[] argspassado para o mainmétodo.
jaco0646
7
Existe alguma maneira de definir isso para acontecer por padrão, para que você não precise inserir manualmente repetidamente para muitos testes?
Stewart
44

Você pode usar java System.properties, para usá-los do eclipse você pode:

  1. Adicione -Dlabel="label_value"os argumentos VM do teste Run Configurationcomo este:

eclipse_vm_config

  1. Em seguida, execute o teste:

    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. Por fim, ele deve passar no teste e gerar isso no console:

    label_value
madx
fonte
13

Você pode adicionar argumentos de linha de comando à configuração de execução. Basta editar a configuração de execução e adicionar -Dmyprop = value (ou qualquer outro) à caixa de argumentos VM.

izb
fonte
4
Se você quis dizer "caixa de argumentos do programa" quando disse "caixa de argumentos da linha de comando" na guia Argumentos - não funciona! Deve ser inserido na "Caixa de argumentos VM", conforme mencionado por Bombe acima.
Devang Kamdar
4

configuração de execução -> argumentos -> argumentos vm

(também pode ser colocado na configuração de depuração em Configuração de Depuração-> Argumentos-> Argumentos VM)

harry.huang
fonte
1

Isso funcionará para Junit. para TestNG use o seguinte comando

-ea -Dmykey="value" -Dmykey2="value2"
Aniruddha Ghanekar
fonte
0

Sim, este é o caminho:

Clique com o botão direito no seu programa, selecione executar -> executar configuração e, em seguida, no argumento vm

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

Então você pode aplicar e fechar.

NiteshJain007
fonte