Java JUnit测试可以';我找不到我想要测试的方法
下面是包含方法“IntRelation”的(不完整)代码段,我想测试它是否抛出异常Java JUnit测试可以';我找不到我想要测试的方法,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 vi
public abstract class IntRelation {
public IntRelation(final int n) throws IllegalArgumentException {
if (n < 0) {
throw new IllegalArgumentException ("Parameter in precondition violated.");
}
}
}
我遇到的问题是,在第二段代码中,NetBeans/JUnit说它找不到方法“IntRelation”。我做错了什么?没错。这是因为你调用构造函数就像调用方法一样;不要那样做 我想你想做的是
instance=newintrelation(…)代码>
或者您的意思是实际上是一个方法,在这种情况下,由于缺少返回类型,您没有正确定义它
公共关系(…)
应该做到这一点
但是您会遇到一个未实例化的实例的问题,这将导致出现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命名约定的;第一个字母应为小写,其余字母应为驼色。例如,这是正确的方式(…)
这是正确的。这是因为你调用构造函数就像调用方法一样;不要那样做
我想你想做的是instance=newintrelation(…)代码>
或者您的意思是实际上是一个方法,在这种情况下,由于缺少返回类型,您没有正确定义它
公共关系(…)
应该做到这一点
但是您会遇到一个未实例化的实例的问题,这将导致出现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命名约定的;第一个字母应为小写,其余字母应为驼色。例如,这是正确的方法(…)
谢谢你的回答。您的意思是在第二段代码中,我应该这样写:“protected IntRelation instance=new InRelation();”?我添加了您的代码,现在代码中的“IntRelation”用红线下划线,并表示“实现所有抽象方法”。如果我点击它,我会看到另一个错误,上面写着“将匿名转换为成员”?啊,刚刚注意到它是抽象的。这真的有必要吗@知识范围你不能实例化一个接口或抽象类,所以你需要让它不是这样,或者提供一个具体的实现。是的,它必须是抽象的。如何在JUnit中实现具体的实现@谢谢你的回答。您的意思是在第二段代码中,我应该这样写:“protected IntRelation instance=new InRelation();”?我添加了您的代码,现在代码中的“IntRelation”用红线下划线,并表示“实现所有抽象方法”。如果我点击它,我会看到另一个错误,上面写着“将匿名转换为成员”?啊,刚刚注意到它是抽象的。这真的有必要吗@知识范围你不能实例化一个接口或抽象类,所以你需要让它不是这样,或者提供一个具体的实现。是的,它必须是抽象的。如何在JUnit中实现具体的实现@酋长给我们铅笔。