【发布时间】:2017-01-18 17:30:21
【问题描述】:
我有一个示例类“A”,我正在对其进行单元测试。我需要规定类“X”的行为,以便它给我一个我在单元测试中指定的随机数,而不是生成的值。我不确定应该模拟哪个类,除了它从抽象类“Y”继承的方法“getGen()”之外,我需要具有 X 的行为,或者我有其他方法可以做什么我想做。
另外,仅仅为了对我的代码进行单元测试而在 X 类中重写“getGen()”是多么愚蠢的想法?还是我的代码不可测试?
测试A类:
class A {
public Type method(Typ1 a) {
//do something
X x = new X(a, String a);
x.doSmething();
//do something?
}
}
X 班:
final class X extends Y {
Typ1 t;
String x;
X(Typ1 t, String x) {
this.t = t;
this.x = x;
}
public void doSomething() {
int x = getGen().method(x);
//do something
}
}
抽象类 y:
abstract class Y {
Obj getGen(){
return someInstanceOfObj;
}
}
对象类:
class Obj {
int method(){
return someNumber;
}
}
【问题讨论】:
-
如果 x.something() 返回 void,那你为什么要模拟它的内部行为呢?如果您只是打算测试 A 类,那么 X 的内部是无关紧要的。也许您真的想测试类 X 及其 doSomethins() 方法的行为?
标签: java unit-testing junit mocking powermock