5

我第一次尝试使用 Spring 设置 Junit 测试套件并尝试在我的类中进行一些更改,但没有运气并最终出现此错误:“junit.framework.AssertionFailedError: No tests found in Myclass”

简而言之,我有 2 个测试类都来自加载 Spring 上下文的同一个基类,如下所示

@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( locations =
{
"classpath:ApplicationContext.xml"
})

我尝试将这两个测试类添加到一个套件中,如下所示

@RunWith( SpringJUnit4ClassRunner.class )
@SuiteClasses({ OneTest.class, TwoTest.class })
public class MyTestSuite extends TestCase {

//nothing here
}

我正在从 ant 运行这个测试套件。但是,这给了我一个错误,说“没有找到测试”但是,如果我从 ant 运行单独的 2 个测试用例,它们就可以正常工作。不知道为什么会出现这种行为,我肯定在这里遗漏了一些东西。请指教。

4

1 回答 1

7

正如评论中提到的,我们使用 运行 TestSuite@RunWith(Suite.class)并使用 列出所有测试用例@SuiteClasses({})。为了不在每个测试用例中重复@RunWith(SpringJunit4ClassRunner.class)and @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
{
}

如果你不想AbstractSampleTestSpringJunitSuiteRunner一个SpringJunitParameterizedRunner.

于 2012-09-15T03:47:12.947 回答