我试图首次使用Spring设置Junit测试套件,并尝试在我的类中进行一些更改,但没有运气并最终出现此错误:"junit.framework.AssertionFailedError:在Myclass中找不到测试"
简而言之,我有两个测试类都来自相同的基类,它加载Spring上下文,如下所示
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( locations =
{
"classpath:ApplicationContext.xml"
})
Run Code Online (Sandbox Code Playgroud)
我尝试将这两个测试类添加到一个套件中,如下所示
@RunWith( SpringJUnit4ClassRunner.class )
@SuiteClasses({ OneTest.class, TwoTest.class })
public class MyTestSuite extends TestCase {
//nothing here
}
Run Code Online (Sandbox Code Playgroud)
我从ant运行这个测试套件.但是,这给了我一个错误,说"没有找到测试"但是,如果我从ant运行个别的2个测试用例,它们可以正常工作.不知道为什么会出现这种情况,我肯定在这里遗漏了一些东西.请指教.
正如评论中所提到的,我们运行TestSuite @RunWith(Suite.class)并列出所有测试用例@SuiteClasses({}).为了不重复@RunWith(SpringJunit4ClassRunner.class)和@ContextConfiguration(locations = {classpath:META-INF/spring.xml})在每个测试用例中,我们创建了一个AbstractTestCase,并在其上定义了这些注释,并为所有测试用例扩展了这个抽象类.可以在下面找到一个示例:
/**
* An abstract test case with spring runner configuration, used by all test cases.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations =
{ "classpath:META-INF/spring.xml" })
public abstract class AbstractSampleTestCase
{
}
public class SampleTestOne extends AbstractSampleTestCase
{
@Resource
private SampleInterface sampleInterface;
@Test
public void test()
{
assertNotNull(sampleInterface);
}
}
public class SampleTestTwo extends AbstractSampleTestCase
{
@Resource
private SampleInterface sampleInterface;
@Test
public void test()
{
assertNotNull(sampleInterface);
}
}
@RunWith(Suite.class)
@SuiteClasses(
{ SampleTestOne.class, SampleTestTwo.class })
public class SampleTestSuite
{
}
Run Code Online (Sandbox Code Playgroud)
如果你不想拥有AbstractSampleTest,那么你需要在每个测试用例上重复spring runner注释,直到Spring出现SpringJunitSuiteRunner类似于他们需要添加的方式SpringJunitParameterizedRunner.
| 归档时间: |
|
| 查看次数: |
8376 次 |
| 最近记录: |