我正在尝试为项目制作一些JUnit测试类。我一直遵循以下格式:
public class ExampleTest extends TestCase {
如果该类已经扩展了某些内容,我将如何创建一个TestCase?就像我有:
public class ExampleTest extends ArrayList<Whatever> {
你无法做到:
public class ExampleTest extends ArrayList<Whatever> extends TestCase {
如果我的课程已经扩展了某些内容,我该如何扩展TestCase?感谢。
答案 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
的(非静态)助手,则应该使用组合而不是继承。