Come eseguire TestNG da main() in un file eseguibile jar?

Ho un eseguibile JAR che contiene tutte le dipendenze e test di classi. Ho confermato che il metodo main() viene chiamato quando provo a eseguire il vaso. Sto cercando di aggiungere il codice main() in modo che io possa eseguire una specifica TestNG classe di test. Dalla documentazione TestNG.org questo sembra essere il modo per farlo:

    TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();
    testng.setTestClasses(new Class[] { com.some.path.tests.MyTests.class });
    testng.addListener(tla);
    testng.run();

Mia cartella struttura è quella tipica:

    /src/main/java/Main.java
    /src/test/java/com/some/path/tests/MyTests.java

Tuttavia quando provo a compilarlo ottengo questo errore:

    java: /src/main/java/Main.java:46: package com.some.path.tests does not exist

C’è in ogni caso posso modificare il mio progetto in modo che testng.setTestClasses() main() può accedere alla classe di test?

OriginaleL’autore TERACytE | 2013-05-09

3 risposte

  1. 7

    Ho utilizzato i seguenti nel mio metodo main() e ha funzionato.

        CommandLineOptions options = new CommandLineOptions();
        JCommander jCommander = new JCommander(options, args);
    
        XmlSuite suite = new XmlSuite();
        suite.setName("MyTestSuite");
        suite.setParameters(options.convertToMap());
    
        List<XmlClass> classes = new ArrayList<XmlClass>();
        classes.add(new XmlClass("com.some.path.tests.MyTests"));
    
        XmlTest test = new XmlTest(suite);
        test.setName("MyTests");
        test.setXmlClasses(classes);
    
        List<XmlSuite> suites = new ArrayList<XmlSuite>();
        suites.add(suite);
    
        TestNG testNG = new TestNG();
        testNG.setXmlSuites(suites);
        testNG.run();
    Ho usato il codice di cui sopra, per l’esecuzione di test sono casi e si sta lavorando bene per la singola prova in caso di utilizzo di più oggetti di prova, non è che non funziona Può aiutare.
    Non riesco ad impostare i miei parametri …

    OriginaleL’autore TERACytE

  2. 6

    È possibile caricare il tuo solito xml nel main utilizzando org.testng.xml.Parser e org.testng.xml.XmlSuite

    String xmlFileName = "testng.xml";
    List<XmlSuite> suite;
    try
    {
        suite = (List <XmlSuite>)(new Parser(xmlFileName).parse());
        testng.setXmlSuites(suite);
        testng.run();
    }
    catch (ParserConfigurationException e)
    {
        e.printStackTrace();
    }
    catch (SAXException e)
    {
        e.printStackTrace();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }

    OriginaleL’autore KCD

  3. 1

    Se questa è la struttura di cartelle e non solo di un tipo, è sbagliato. Il nome del pacchetto è rappresentato come una struttura di cartelle, non una cartella con il nome del pacchetto.

    Quindi dovrebbe essere src/test/java/com/some/path/tests/MyTests.java

    Inoltre, assicurarsi che il test classi sono in realtà nel file Jar. Se si sta utilizzando maven per creare il Jar, il test di classi non saranno inclusi per impostazione predefinita.

    Ciao NilsH. Ho confermato che il test classi sono in VASO, e che la struttura delle cartelle è accennato sopra è in realtà com’è sul disco (una cartella di nome “com.alcuni.percorso.test”). Ho cambiato questo standard, che è quello che avete descritto sopra, ma “com.some.path.tests.MyTests.class” non può ancora essere trovato.
    Non MyTests la corretta dichiarazione di pacchetto?
    Fa: “il pacchetto com.alcuni.percorso.test”

    OriginaleL’autore NilsH

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *