JUnit:如果类已经扩展了什么,你如何扩展TestCase?

时间:2013-04-04 01:55:11

标签: java inheritance junit extends testcase

我正在尝试为项目制作一些JUnit测试类。我一直遵循以下格式:

public class ExampleTest extends TestCase {

如果该类已经扩展了某些内容,我将如何创建一个TestCase?就像我有:

public class ExampleTest extends ArrayList<Whatever> {

你无法做到:

public class ExampleTest extends ArrayList<Whatever> extends TestCase {

如果我的课程已经扩展了某些内容,我该如何扩展TestCase?感谢。

2 个答案:

答案 0 :(得分:3)

您似乎正在使用Junit 3.x.从Junit 4.0开始,您的测试用例类不需要扩展TestCase。它只需要根据需要使用@Test@Before@After@BeforeClass@AfterClass等注释方法。这将允许您的测试用例类扩展其他类。

在我们的项目中,我们使用Spring测试运行器运行JUnit测试,并且需要将几个注释与每个测试用例相关联。我们通过定义一个抽象测试用例,将注释与这个抽象测试用例相关联,并使每个其他测试用例扩展它来解决这个问题。

@RunWith(SpringJunit4TestRunner.class)
@ContextConfiguration(location={})
public class AbstractTestCase
{

}


public class ConcreteTestCase extends AbstractTestCase
{
    @Before
    public void setUp()
    {
        // Some set up before each test.
    }

    @Test
    public void test1()
    {
        // Some test
    }

    @Test
    public void test2()
    {
        // Some other test
    }

    @After
    public void tearDown()
    {
        // Some tear down process after each test.
    }

}

答案 1 :(得分:0)

您的测试课程应该只是一个测试课程,而不是其他。有充分的理由希望Java具有多重继承,但这不是其中之一。如果您希望集中化通用的测试逻辑,则任何抽象基类本身都应该扩展TestCase

如果您希望使用另一类无法扩展TestCase的(非静态)助手,则应该使用组合而不是继承。