在为我即将参加的考试而学习时,我在一次旧考试中偶然发现了有关JUnit的问题,我并没有真正理解它。
给出以下图片和问题:
第一类:
第二课:
是由于接口未正确实现而导致的实际代码逻辑错误还是更多?
答案 0 :(得分:0)
我一直在看您附加的这两张图像,但是我真的很困惑。
在编写测试时,我需要知道方法或类的目的是什么,但是在所提供的代码中,关于所需功能的信息很少。
您的问题:“实际的代码逻辑中是否存在错误”很难回答,因为您将不得不尝试解释缺乏任何形式的变量名或类名的代码的含义。也没有任何评论描述任何事情。最重要的是,该接口具有未指定的逻辑
public boolean u(int v, int w)
这应该是一个奇迹。
这意味着我们缺少最重要的部分:对我们需要测试的代码的预期行为的了解。
如果我们仅解析代码并编写仅遵循函数中指定操作的测试,那将不是什么测试。这与“测试驱动开发”的相反,即编写适用于代码的测试,而不是编写用于指定代码的预期工作方式的测试,然后根据测试的断言修改代码以使其工作。
如果我的考试中出现这个问题,我将拒绝编写任何代码或尝试对其进行测试。我只是简单地指出所提供的信息不足以提供有意义的测试。
我希望这个答案对您有所帮助。我相信看到您的教授对这个问题要说些什么会很有趣。可能是这样的情况,他们希望学生意识到单元测试的真正含义,并且不希望您实际编写任何代码,而是得出这样的结论:该代码确实对测试没有任何意义。
答案 1 :(得分:0)
A类的主要问题是类,变量和方法的名称什么也没说。很难识别此类中的任何业务规则。
在界面B中,发生了同样的问题,并且对“复合功能”的注释上瘾了。
答案 2 :(得分:0)
类A的方法使用在接口A中定义的方法t()。要解决此问题,类A必须实现接口B,并在类的主体中显式实现方法t()。 公共类A实施B { ..... public int t(){ 返回...; } }