我正在尝试依靠JUnit4TestAdapter使用JUnit4编写测试套件。看一下code of this class我看到它只适用于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),然后我想测试其他部分,如按钮等。 这背后的想法是对某些屏幕中可用的功能进行更好的分类。这与我们目前正在开发我们的网络应用程序的方式非常吻合。
考虑到这一点,TemplateTest只是由我系统中可用的不同类型的测试(ActionIconTest,ButtonTest等)实现的接口。 TemplateTester是一个Junit套件测试,具有实现TemplateTest接口的所有不同测试。
这个问题的原因是因为我试图实现一个策略模式,然后意识到在运行时将类传递给Junit4TestAdapter是不方便的。
答案 0 :(得分:0)
好吧,考虑到JUNIT需要你的测试者的Class对象作为对象工厂(所以他可以创建你的测试人员的几个实例),我只能建议你通过系统将参数传递给你的测试人员属性。
此外,这是传递参数的推荐方式:http://junit.org/faq.html#running_7