首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试抽象类抛出InstantiationException

测试抽象类抛出InstantiationException
EN

Stack Overflow用户
提问于 2014-01-17 15:47:19
回答 2查看 7.5K关注 0票数 7

这是我第一次编写JUnit测试,我遇到了以下问题。我必须为一个抽象类编写测试,并被告知要这样做:http://marcovaltas.com/2011/09/23/abstract-class-testing-using-junit.html

但是,当我尝试运行第一个测试时,我得到了这样一个InstantiationException

代码语言:javascript
复制
java.lang.InstantiationException
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

下面是我正在做的测试:

代码语言:javascript
复制
/**
 * Test of setNumber method, of class BaseSudoku.
 */
@Test
public void testSetNumber_3args() {
    System.out.println("setNumber");

    BaseSudoku b = getObject(9);
    boolean expResult = false;
    boolean result = b.setNumber(0, -7, 7);
    assertEquals(expResult, result);            
}

注意,HyperSudoku是一个抽象类,HyperSudoku是一个子类。

我在BaseSudokuTest中实现了以下抽象方法:

代码语言:javascript
复制
protected abstract BaseSudoku getObject(int size); 

下面是在HyperSudokuTest中扩展BaseSudokuTest的实现

代码语言:javascript
复制
@Override
protected BaseSudoku getObject(int size) {  //I need size for other implementations 
    return new HyperSudoku();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-17 15:57:00

您已经指出,BaseSudokuTest有一个abstract方法,因此是abstract本身。

假设您通过BaseSudokuTest运行测试,Junit将使用反射来创建测试类的实例。不能直接或通过反射实例化抽象类。

将抽象方法移动到其他类。您的JUnit测试类不能是abstract

或者更确切地说,运行HyperSudokuTest类。它将从@Test继承BaseSudokuTest方法。

票数 9
EN

Stack Overflow用户

发布于 2020-01-04 10:56:32

我遇到了一个类似的问题,这是由于将抽象测试类添加到TestSuite中引起的:

代码语言:javascript
复制
import junit.framework.TestSuite;

public class AllTests {
    public static TestSuite suite(){
        TestSuite suite = new TestSuite();
        suite.addTestSuite(SessionTest.class); // Abstract class
        suite.addTestSuite(CourseSessionTest.class); // Extends SessionTest        
        return suite;
    }
}

将SessionTest.class从TestSuite中删除,修复了我的问题,因为我试图通过将抽象类添加到套件(这是错误的来源)中实例化它,而CourseSessionTest无论如何都在调用它中的所有方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21190019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档