我刚刚介绍了单元测试和测试驱动开发.到目前为止,我只使用Junit作为测试框架.出现了一个我尚未找到明确答案的问题是:我需要编写多少测试用例?我是否必须为我的程序中的每个类编写一个测试用例?或者这是一个愚蠢的问题,因为单元测试意味着在最低(即类)级别进行测试?
我认为为每个类编写一个测试用例可能是更安全的方法(毕竟你测试的越多,意外错误的数量越少).但是我想知道是否有关于要编写的测试用例数量的广泛认可的策略?
我有两个类:父类A和一些子类B,它扩展了A并且还有几个字段而不是A.我希望能够克隆这两个类,所以我clone()从Object类中重写了该方法.
由于B类基本上是A类,有一些额外的字段,我想在clone()B 类的实现中使用A类的克隆.我尝试了以下几点:
public class A
{
public Object clone()
{
A cloneA = new A();
cloneA.foo = this.foo;
cloneA.bar = this.bar;
return cloneA;
}
}
public class B extends B
{
public Object clone()
{
Object cloneA = super.clone();
B cloneB = (B)cloneA;
cloneB.fieldSpecificForB = this.fieldSpecificForB;
return cloneB;
}
}
Run Code Online (Sandbox Code Playgroud)
这样我就不必clone()在B的clone()方法中复制A 方法中的所有克隆逻辑.不幸的是,这不起作用,因为Java不允许将类A的对象转换为类B的对象.我搜索了如何执行此操作的答案,但似乎没有办法重用克隆逻辑答:这是否意味着每次我向A添加另一个字段时,我都必须手动将此字段的复制添加到所有子类的clone()方法中.这似乎非常容易出错......