TESTNG | вызов testng. xml файла из основного метода из исполняемого файла - PullRequest
0 голосов
/ 25 февраля 2020

Я новичок в testng + maven, и у меня есть требование запускать скрипты, используя исполняемый jar. Набор должен быть выполнен для нескольких регионов. Имя региона передается в качестве аргумента при выполнении jar. Теперь мое требование - переключаться между несколькими файлами testng. xml в соответствии с указанным именем региона. Все файлы testng. xml помещаются в папку ресурсов -> «resources / testngA. xml» и «resources / testngB. xml». Когда я запускаю скрипт из eclipse, он работает нормально, но когда я пытаюсь выполнить его через runnable.jar, он показывает java .io.FileNotFoundException исключение . Может кто-нибудь, пожалуйста, помогите мне исправить это.

public class TestRunner {

    static TestNG testng;
    static List<String> suites;
    public static void main(String[] args) {
        String xmlFileName = "";
        List<XmlSuite> suite;
        String region = arg[0];
        try
        {
            if(region.equals("A")){
                xmlFileName = "resources/A_TestNG.xml";
            }else if(region.equals("B")){
                xmlFileName = "resources/B_TestNG.xml";
            }else{
                System.out.println("No matching region found")
            }
            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();
        }
    }
}

1 Ответ

0 голосов
/ 25 февраля 2020

Когда вы имеете дело с ресурсами, вы должны использовать следующий подход:

1) Получить URI ресурса

URI aTestNgURI = TestRunner.class.getClassLoader().getResource("A_TestNG.xml").toURI();

2) Получить путь к файлу

String aTestNgFilePath = new File(aTestNgURI).getAbsolutePath();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...