我在考虑代码重用:
假设我们有这样的课程:
public abstract class AbstractMap {
public abstract void put(K k, V v);
public abstract V get(K k);
}
public class ConcreteMapA extends AbstractMap {
@Override
public void put(K k, V v) {
// put implementation detail A
...
}
@Override
public V get(K k) {
// get implementation detail A
...
}
}
public class ConcreteMapB extends AbstractMap {
@Override
public void put(K k, V v) {
// put implementation detail B
...
}
@Override
public V get(K k) {
// get implementation detail B
...
}
}
这两张地图实现了相同的功能,但具有不同的实现细节。我想为这两个具体的类写单元测试。但随后测试用例开始重复。
public class ConcreteMapATest {
@Test
public void testPutCase1 {
...
}
@Test
public void testPutCase2 {
...
}
@Test
public void testGetCase1 {
...
}
...
}
// following starts to be duplicate code
public class ConcreteMapBTest {
@Test
public void testPutCase1 {
...
}
@Test
public void testPutCase2 {
...
}
@Test
public void testGetCase1 {
...
}
...
}
那么测试这种方法的正确方法是什么?如何重用这些testMethods?或者我可能不应该重复使用单元测试?
谢谢!