К вашему сведению, объект DataBean - это запах, называемый anemic object.
Это DTO (объект для передачи данных), поэтому, за исключением случаев, когда это требуется какой-либо средой, старайтесь сохранить этинеизменным, или, по крайней мере, сделайте его явным, что нет инкапсуляции:
public class DataBean {
public String browserName;
public String userName;
}
В любом случае, кажется, что вы пытаетесь параметризовать тест.
Учитывая, что тестовый объект создаетсяJUnit, вам придется изменить тестовый класс, используя API, предоставленный JUnit, чтобы внедрить необходимый объект / данные.
Вы можете использовать хранилище ThreadLocal для обхода API-интерфейса платформы, но я его вообще не рекомендую.
Если вы используете JUnit, сделайте это способом JUnit.
Предполагая, что вы все еще используете JUnit4, вы можете пойти (как минимум) двумя путями:
Первый , используя встроенный бегун JUnit4 Parameterized
, делая тестовый класс параметризованным:
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class BrowserTest {
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{new DataBean("chrome", "user1")},
{new DataBean("firefox", "user2")}
});
}
private final DataBean dataBean;
public BrowserTest(DataBean dataBean) {
this.dataBean = dataBean;
}
@Test
public void test() {
// Test using a dataBean instance
}
}
Второй ,используйте третью библиотеку под названием JUnitParams с бегуном JUnitParamsRunner, макороль метод тестирования параметризованный:
import org.junit.Test;
import org.junit.runner.RunWith;
import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
@RunWith(JUnitParamsRunner.class)
public class BrowserTest {
@Test
@Parameters(method = "test_cases")
public void test(DataBean dataBean) {
// Test using a dataBean instance
}
public static Object[] test_cases() {
return new Object[]{
new DataBean("chrome", "user1"),
new DataBean("firefox", "user2")
};
}
}
Наконец , есть новая версия, JUnit5 , которая сильно меняется в зависимости от его модели расширенияпоскольку он позволяет составлять функции (вместо одного бегуна).
С JUnit5 такой же тест можно написать так:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
class BrowserTest {
@ParameterizedTest
@CsvSource({
"chrome, user1",
"firefox, user2"
})
void test(String browserName, String userName) {
// Test using a dataBean instance
}
}
Надеюсь, это поможет!