2015-10-13 8 views
2

У меня есть 4 тестовых сценария для моего приложения. В каждом скрипте я использую структуру, управляемую данными, для тестирования с несколькими значениями. Поэтому каждый раз в каждом скрипте я инициализирую необходимые переменные, которые являются почти обычными во всех сценариях. Существует ли возможность повторного использования этих переменных или констант в java или селене?Как повторно использовать переменные в java с селеном

ниже мой код

static String excel,sheet; 

    @BeforeClass 
     public void start(){ 
      driver.findElement(By.id("")); 
     } 

     @DataProvider 
     public static Object[][] chartDetails() throws IOException{ 
      excel = Init.readConfig("xls"); 
      sheet = Init.readConfig("sheetName"); 
      data = ReadData.getData(excel, sheet); 
      return data;  
     } 

    @Test(dataProvider="chartDetails") 
    public static void generateCharts(String standName,String termName) { 
     driver.findElement(By.id("script goes here")); 
     Assert.assertEquals("actual","expected"); 
    } 

В коде выше, объявление часть будет общим во всех модулях. поэтому я хочу повторно использовать одни и те же переменные.

+1

показать нам некоторый код –

+0

@SajanChandran добавил – Anitha

ответ

2

Являются ли эти тестовые скрипты реализованы как классы Java? Если это так, есть два общих способа сделать это.

Создайте суперкласс, на котором наследуется каждый из 4 сценариев тестирования, из которых определяются общие переменные и общая логика для их заполнения.

public BaseTest { 
    protected sharedVariable1; 
    protected sharedVariable2; 
    protected sharedVariable3; 

    @Before 
    public void sharedInit() { 
     sharedVariable1 = //.. 
     sharedVariable2 = //.. 
     sharedVariable3 = //.. 
    } 
} 

public Test1 extends BaseTest { 
    @Before 
    public void specificInit() { 
    } 
} 

Или создать отдельный класс, который содержит только общие переменные и общие логики и использовать этот класс в каждом из сценариев тестирования 4.

public Shared { 
    private sharedVariable1; 
    private sharedVariable2; 
    private sharedVariable3; 

    public Shared() { 
     sharedVariable1 = //.. 
     sharedVariable2 = //.. 
     sharedVariable3 = //.. 
    } 
} 

public Test1 { 
    private Shared shared; 

    @Before 
    public void init() { 
     shared = new Shared(); 
    } 
} 
+0

@ sh0ruguru хорошие answer..I думают второй выбор будет лучше. Я также думаю, что второе решение перед публикацией вопроса. – Anitha

+0

@ sh0ruguru wat о первом? не удалось понять lil bit – Anitha

+0

JUnit выполнит любые методы '@ Before' в базовых классах. Придерживание метода '@ Before' в суперклассе - хороший способ сделать этот метод запущенным во всех базовых классах. Кроме того, JUnit гарантирует запуск методов '@ Before' в базовых классах, поэтому совместная инициализация будет выполнена до конкретной инициализации. – sh0rug0ru