2016-11-02 13 views
2

У меня есть 3 класса тестов java. 1. ListenerTest1.java 2. ListenerTest2.java 3. ListenerMain.javaКак запустить тестовый класс из другого класса java

Над двух классов TestFixture ListenerTest1.java и то есть ListenerTest2.java есть методы испытаний. Кроме того, имея файл build.gradle как: -

task automationTests(type: Test) { 

    systemProperty 'serviceType', System.properties['serviceType'] 


    useTestNG { 
     useDefaultListeners = true 
     suiteXmlBuilder().suite(name: 'Testing case') { 
      test(name: 'ServiceUITests', annotations: 'JDK', verbose: '1') { 
       classes([:]) { 

        'class'(name: 'company.platform.ListenerMain') 

       } 
      } 
     } 
    } 
} 

Таким образом, в то время как работает мой Hudson работу, он вызывает задачу automationTests т.е. и работает мой класс ListenerMain. Мне нужно добавить условие if/else в файле класса ListenerMain, которое будет дифференцироваться, чтобы выполнить оба из указанных выше двух классов, упомянутых i.e ListenerTest1.java или ListenerTest2.java, на основе System.property, добавленного в работу hudson.

например

@Listeners(value = {PreconditionListener.class}) 
public class ListenerMain { 
    private static String serviceTypeUseParameter ; 
    private static Logger logger = LogManager.getLogger(ListenerMain .class.getName()); 
    @BeforeClass 
    //TestNg Annotation 
    public void setup() 
    { 
     //############# Hudson job parameter is serviceType ########## 
serviceTypeUseParameter = System.getProperty("serviceType"); 
     if (serviceTypeUseParameter.equals("ListenerTest1Method")){ 
     // Run ListenerTest1 class 
     } 
     else{ 
     // Run ListenerTest2 class 
     } 
    } 
} 

Какой код нужно добавить для загрузки класса в соответствии, если/другое состояние? Я могу добавить основной метод в ListenerMain, если это необходимо.

+0

обратитесь к http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html#runClasses (java.lang.Class ...) – Jobin

+0

Не могли бы вы поделиться ListenerTest1 и ListenerTest2? Какие интерфейсы они реализуют? – juherr

+0

В обоих классах не используются интерфейсы. Его простой класс TestFixture, который состоит из тестовых таблиц (test mtthods) с использованием аннотаций TestNg. –

ответ

0

Вы можете добавить код, указанный ниже, в код if/else. и в методе runClasses вы можете указать тестовый класс.

Result result = JUnitCore.runClasses(ListenerTest1.class); 
+0

Почему JUnitCore, если я использую TestNg? –

+0

TestNG - это платформа тестирования, разработанная в строках JUnit и NUnit, я думаю, что для этой цели вы можете использовать JUnitCore. –

0

У вас есть два варианта в TestNG:

  1. Реализовать annotation transformer.
  2. Использование BeanShell

Ваша аннотация трансформатор будет проверять состояние, а затем переопределить @test аннотации, чтобы добавить атрибут «Enabled = ложь», если условие не выполнено.

+0

Как уже упоминалось, у меня есть 2 класса diff i.e ListenerTest1 и ListenerTest2, поэтому мне нужно вызвать целый класс из класса ListenerMain. Я думаю, что выше ссылки помогут, если один класс состоит из разных методов групп. –

 Смежные вопросы

  • Нет связанных вопросов^_^