我们的测试框架基于Junit 3.x。
如果我可以执行junit 4测试用例,我正在尝试检查当前框架。
在我们的框架中,从命令行或UI,TestServlet
执行测试用例有多种方法1)通过Testsuite - 完全限定名称 2)通过Testsuite(完全限定名称)和个别测试用例(从套件中执行一个测试用例)..
我正在尝试在我们的专有框架中使用Juint4测试,该框架使用了联合3.x)
我被困在一块。
新的测试用例在Junit 4中并使用JUnit4TestAdapter。
问题:当我知道带注释的junit 4方法时,如何构造测试对象。</ p>
Class suiteClass = ClassUtil.classForName(suiteName);
Object o = ClassUtil.newInstance(suiteClass);
//the suite name passed contains junit4 tests
if ( !(o instanceof TestSuite)&& isjunit4TestCase(o))
{
// see if the method exists in the class
Method method;
try {
method = suiteClass.getMethod(testName);
} catch (NoSuchMethodException e) {
Log.harness.debug("method: %s not found in %s",testName, nameToUse);
return null;
}
Test m_test = null;
if (method.isAnnotationPresent(org.junit.Test.class))
{
/*here I need to construct a Test Object and stuck
junit.framework.Test need this object to be returned
*/
m_test = (Test)method;
return m_test;
}
else
return null;
答案 0 :(得分:0)
您可以使用JUnit4TestAdapter.filter(Filter)
吗?然后,您可以选择编写自己的过滤器或使用Filter.matchMethodDescription(Description)
。使用createTestDescription(Class<?> testClass, String methodName)
静态工厂方法时,匹配的描述变得非常简单。
因为JUnit4TestAdapter本身实现了Test,所以您只需将过滤后的JUnit4TestAdapter直接传递给需要Test实例的方法即可。 只需将JUnit4测试类本身传递给JUnit4TestAdapter构造函数,就可以轻松创建实例。
(事实上,你可以避免在你的答案中有一些反思,并把它交给JUnit代替。)