按要求对下述Java程序进行单元测试。 public class Body { public int demofunc(int n1,int n2) { int a; a = sumFunc(n1, n2); System.out.println(a); return a; } //模块A public int sumFunc(int a, int b) { int c1, c2; c1 = factorial(a); c2 = factorial(b); return (c1 + c2); }//模块B public int factorial(int n) { int rtn = 1; int i; for (i = 1; i<= n; i++) { rtn *= i; } return (rtn); }//模块C 要求: 对模块A进行单元测试时, 1.是否需要驱动模块(是/否)? 如果需要,请编写驱动模块 2.是否需要桩模块(是/否)?如果需要,请编写桩模块
时间: 2024-02-04 19:03:16 浏览: 81
1. 针对模块A进行单元测试时,需要驱动模块,因为模块A依赖于模块B和模块C的功能。下面是一个简单的驱动模块示例:
```
public class BodyTest {
private Body body;
@Before
public void setUp() {
body = new Body();
}
@Test
public void testDemoFunc() {
int n1 = 2;
int n2 = 3;
int expected = 122; //期望输出 2! + 3! = 2 * 1 + 3 * 2 * 1 = 2 + 6 = 8
int actual = body.demofunc(n1, n2);
assertEquals(expected, actual);
}
}
```
2. 针对模块A进行单元测试时,不需要桩模块,因为模块A不依赖于其他模块的接口。
相关问题
class Parent { public int addValue( int a, int b) { int s; s = a+b; return s; } } class Child extends Parent { } 下述哪个方法可以加入类Child? A. int addValue( int a,int b ){// do something...} B. public void addValue (int a,int b ){// do something...} C. public int addValue( int a ){// do something...} D. public int addValue( int a,int b )throws MyException {//do something...}
选项A和选项B都可以加入类Child。
由于类Child继承了类Parent,所以Child类可以访问Parent类中的public方法。因此,选项A和选项B都可以加入类Child,这两个方法都是public访问权限,且方法名称和参数列表与Parent类中的addValue方法相同,因此符合Java中的方法重写规则。
选项C的方法参数与Parent类中的addValue方法不同,因此不符合Java中的方法重写规则,不能加入类Child。
选项D的方法增加了一个throws声明,表示该方法可能会抛出一个自定义的MyException异常,这不违反Java中的方法重写规则,但是该方法参数列表与Parent类中的addValue方法相同,因此不符合Java中的方法重写规则,不能加入类Child。
对于下列代码: class Parent { public int addValue( int a, int b) { int s; s = a+b; return s; } } class Child extends Parent { } 下述哪个方法可以加入类Child?
这是一道重复的问题,刚才我已经回答了,我再重复一遍:
由于Child类继承了Parent类,所以Child类可以使用Parent类的所有方法。因此,Child类可以直接使用Parent类的addValue方法。如果Child类需要覆盖(override)addValue方法,可以使用与Parent类相同的方法签名,如下所示:
```
class Child extends Parent {
public int addValue( int a, int b) {
int s;
s = a+b+1; // 增加了1
return s;
}
}
```
这样,Child类就拥有了一个addValue方法,它和Parent类的addValue方法有相同的方法签名,但是实现不同。
阅读全文