问题描述
我试图依靠JUnit4TestAdapter使用JUnit4编写测试套件。 看一下的我发现它仅适用于Class作为输入。 我想在使用TestSuite运行它之前构建一个测试类并在其上设置一个参数。 不幸的是,Junit4TestAdapter通过使用反射来构建测试(不是100%确定其背后的机制),这意味着我无法在运行时更改测试类。 有人做过类似的事情吗? 有没有可能解决此问题的方法? 谢谢你的帮助!
public class SimpleTest {
@Test
public void testBasic() {
TemplateTester tester = new TemplateTester();
ActionIconsTest test = new ActionIconsTest();
test.setParameter("New Param Value");
tester.addTests(test);
tester.run();
}
}
/////
public class TemplateTester {
private TestSuite suite;
public TemplateTester() {
suite = new TestSuite();
}
public void addTests(TemplateTest... tests) {
for (TemplateTest test : tests) {
suite.addTest(new JUnit4TestAdapter(test.getClass()));
}
}
public void run() {
suite.run(new TestResult());
}
}
/////
public interface TemplateTest {
}
/////
public class ActionIconsTest extends BaseTestStrategy implements TemplateTest {
@Test
public void icons() {
//Test logic here
}
public void navigateToTestPage() {
//Here I need the parameter
}
}
/////
public abstract class BaseTestStrategy {
protected String parameter;
@Before
public void init() {
navigateToTestPage();
}
public abstract void navigateToTestPage();
public void setParameter(String parameter) {
this.parameter = parameter;
}
}
我正在尝试使用Selenium测试Web应用程序。 我想测试的方法是通过拆分功能,例如,我想测试可用的图标(ActionIconsTest),然后我想测试其他部分,例如按钮等。其背后的想法是对在某些屏幕上可用的功能。 这与我们当前开发Web应用程序的方式相结合。
考虑到这一点,TemplateTest只是由系统中可用的不同类型的测试(ActionIconTest,ButtonTest等)实现的接口。 TemplateTester是Junit套件测试,其中包含实现接口TemplateTest的所有不同测试。
出现此问题的原因是因为我试图实现策略模式,然后意识到在运行时将类传递给Junit4TestAdapter带来了不便。
1楼
好吧,考虑到JUNIT需要将测试人员的Class对象作为对象工厂(以便他可以创建测试人员的多个实例 ),我只能建议您通过系统属性将参数传递给测试人员。
此外,这是传递参数的推荐方式: :