java - JUnit测试找不到我要测试的方法

标签 java junit

下面是包含方法“IntRelation”的(不完整)代码,我想测试它是否引发异常。

public abstract class IntRelation {

    public IntRelation(final int n) throws IllegalArgumentException {
        if (n < 0) {
            throw new IllegalArgumentException ("Parameter in precondition violated.");
        }
    }
}

下面是包含“IntRelation”方法测试用例的(不完整)代码段。

public abstract class IntRelationTestCases {

    protected IntRelation instance;

    @Test
    public void testException0() {
        Class expected = IllegalArgumentException.class;
        instance.IntRelation(-1);
    }
}

我遇到的问题是,在第二段代码中,NetBeans/JUnit 说它找不到方法“IntRelation”。我做错了什么?

最佳答案

确实如此。这是因为您像调用方法一样调用构造函数;不要这样做。

我想你想做的是instance = new IntRelation(...);

或者你的意思是它实际上是一个方法,在这种情况下,由于缺少返回类型,你没有正确定义它。

public void IntRelation(...) 应该在这方面做到这一点。

但是,您会遇到未实例化实例的问题,这会导致您出现NullPointerException

如果您想设置一些数据来测试,最好使用注释来为测试做好准备。

示例:

@Before
public void setUp() {
    // Since your class is abstract you can do it like this
    // to get an anonymous class you can test that non-abstract
    // method with...
    instance = new IntRelation() { };
}

然后像往常一样从测试该单元的测试中调用它。

@Test
public void testException0() {
    ...
    instance.IntRelation(-1);
}

不过,我想说,命名与其类名相同的方法似乎可能会造成困惑。另外,使用前导大写字母来命名方法是违反 Java 命名约定的;第一个字母应为小写,其余字母应为驼峰式。例如,thisIsTheCorrectWay(...)

关于java - JUnit测试找不到我要测试的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637824/

相关文章:

java - 以 UUID 作为参数的 Hibernate 命名查询

Java - 最简单的是查找基元数组中是否存在某个位置?

java - JUnit 的 hamcrest 库是否有一个 API 来测试公共(public)变量而不是属性

java - 如何将 mongoclient 注入(inject)我的 POST 服务

java - == on Java 中的 String 不符合预期?

java - 从纪元时间/时间戳中删除毫秒 | java

java - 无法让使用 JUnit4 的项目在 IntelliJ Idea 中工作

java - 如何在 junits 中覆盖当前系统日期

java - 为什么我的断言失败 - 预期为 'x' 但发现为 'x' ?

Java:如何定义从FileChannel读取所有数据的缓冲区大小