2014-01-14 4 views
1

Что я хотел сделать, это прочитать параметризованные значения и использовать их в классе before, чтобы настроить webdriver для bowser, как это определено параметром, запустить тесты в браузере. Затем запустите следующий браузер и запустите тест в этом браузере и так далее для всех других указанных браузеров. Но я получаю нулевые значения в классе before для пармеров. Можете ли вы сделать это в Junit или есть другой способ сделать это?Использовать параметры в beforeclass в Junit

Благодаря

@RunWith(value = Parameterized.class) 
public class MultiBrowser { 

private static WebDriver driver; 
private static String browser; 
//private static Dimension device; 
private static String testData = "Testing"; 
private static String device; 

@Parameters 
public static Collection< Object[]> data() { 
    System.out.println("Inside parameter"); 
    return Arrays.asList(new Object[][]{{"Firefox", "IPHONE4"},{"Chrome", "IPAD"},{"Ie", "SamsungGalaxy"}}); 
} 

public MultiBrowser(String browser, String device){ 
    System.out.println("Inside MultiBrowser = "+ browser+" " + device); 
    this.browser=browser; 
    this.device=device; 
} 

@BeforeClass 
public static void dosetUp() throws Exception { 
    System.out.println("Doing setup before class..." + browser + device); 
} 

ответ

1

Техника вы используете здесь не будет работать. @Parameters вводятся через конструкторы, но ваш статический метод @BeforeClass вызывается перед вызовом любого конструктора, поэтому эти статические поля будут null.

Ваш вопрос очень похож на Creating a JUnit testsuite with multiple instances of a Parameterized test, а также Parameterized suites in Junit 4?; оба ответа предлагают TestNG как основу, которая может это сделать.

В JUnit вы можете использовать технику, предложенную How do I Dynamically create a Test Suite in JUnit 4? , для динамического создания тестового набора и обойтись без использования @Parameters.

Или, для более простого, но менее эффективного решения, переместите код установки в нестатический метод @Before и примите, что он будет работать до каждого отдельного теста.

+0

Я столкнулся с той же проблемой, что и PO, но когда я устанавливаю точки отладки в моих (A) методах BeforeClass и (A) Parameters, параметры (A) вызываются перед (A) BeforeClass. – Rule

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