我正在使用JUnit 5,并从“软件测试”书中复制了代码,以便创建一个模拟对象进行测试。部分测试器代码是:
@Test
public void rangesOKTestWithoutDependency() {
// This is an anonymous class
SimpleDate simpleDate = new SimpleDate(1, 1, 2000) {
@Override
public boolean isLeap(int year) {
if(2000 == year) return true;
else if(2001 == year) return false;
else throw new IllegalArgumentException("No Mock for year " + year);
}
};
assertTrue(simpleDate.rangesOK(2, 29, 2000)); // Valid due to leap year
assertFalse(simpleDate.rangesOK(2, 29, 2001)); // Valid due to leap year
}
我有一个编译器错误,它说“方法isLeap(int)必须覆盖或实现一个超类型方法”。此错误在我覆盖isLeap()方法的行中报告。(@over下面的行)
好吧,令人惊讶的是,这就是我所做的。所以我不知道这是什么抱怨。下面是simpleDate类中的isLeap()方法:
private boolean isLeap(int year) {
boolean isLeapYear = true;
if(year % 4 != 0)
isLeapYear = false;
else if(year % 100 != 0)
isLeapYear = true;
else if(year % 400 != 0)
isLeapYear = false;
return isLeapYear;
}
正如您所看到的,测试仪中的方法是原始方法的重写版本,但我仍然得到一个错误。有什么想法吗?
ps:我正在使用eclipse。
我打算做的是测试一个“私有”方法,这当然是不可见的。因为它不可见,所以我无法覆盖它。所以我犯的错误完全有道理。
我用java解决了测试私有方法的问题。这个想法来源于本文。
现在,我在想的是如何为其他不提供类似API的语言解决同样的问题。换句话说,如何创建一个模拟对象以进行测试,如果可能的话,以规避方法的不可见性
超类中的私有方法对子类不可见。您需要删除@Overries注释或将SimpleDate中的方法更改为protected以删除编译错误。
删除@Overder不会影响超类,两个isLeap方法没有覆盖关系。
将SimpleDate中的方法更改为protected,子类中的方法确实会覆盖超类中的方法。
我是Android和Java的初学者。我寻找这个错误的答案,但stackOverflow中的任何东西都不适合我的情况。我在读一本书,书中说我们需要使用一个onListItemClick()方法,该方法来自我们创建的扩展ListFragment的类(CrimeListFragment)(使用该方法和类是必需的)。 然而,我不断发现以下错误: 错误说 “CrimeListFragment类型的onLi
下面是我的课:
我正在制作一个定制的盔甲,在我的盔甲课程中我得到了这个错误: ArmorE类型的方法getArmorTexture(ItemStack,Entity,int,int)必须重写或实现超类型方法 为什么我会犯这个错误? 这是我的代码: 装甲等级: 主类的一部分:
我有以下代码:https://pastebin.com/19njjj9s(我放在这里是因为对于stackoverflow来说代码太多了) 但是它不会覆盖onClick方法(第192行),我不明白为什么。 重写onclick方法背后的想法是获取日期并接收radiogroup以设置其中一个值。如果有人能帮我,我会帮你的。
问题内容: 这是我的代码,假设可以在按下按钮时更改一些文本:- 用下划线标记,它给我一个错误“类必须声明为抽象或实现抽象方法”。该代码大部分是从互联网上复制的,并且可以正常工作。可能仅是Android Studio错误。我如何使它工作? 问题答案: 必须实现该函数,否则您的类应该是抽象的,以便可以在某些子类中实现您的函数。但是在您的情况下,您犯了一个拼写错误。应该代替;
构建基于链表的队列实现。由于以下两个错误,无法运行应用程序: 错误#1:错误:队列。ListIterator不是抽象的,并且不会覆盖迭代器中的抽象方法next(),其中Integer是一个类型变量:Integer扩展类队列中声明的对象。列表迭代器 错误#2:错误:队列中的next()。ListIterator无法在迭代器中实现next(),返回类型int与Integer不兼容,其中E、Intege