我开始使用一些测试驱动的开发实践,并且在决定是否以及如何测试我的代码这一部分时遇到问题。设计套接字创建测试,TDD Java
我有一个类AbstractServer
含有ServerSocketFactory
和ServerSocket
:
public abstract class AbstractServer extends Thread {
...SNIP...
//ServerSocket and factory.
private ServerSocket ss;
private ServerSocketFactory ssf;
public AbstractServer (int _port) {
this.port = _port;
try {
ssf = ServerSocketFactory.getDefault();
ss = ssf.createServerSocket(port);
} catch (IOException e) {
// Couldn't create ServerSocket, die.
System.exit(1);
}
}
... SNIP ...
无论是ServerSocket
和ServerSocketFactory
是private
,并不会暴露这个类之外。
我的问题:
我应该创建测试来检查我是否真的创造
ServerSocket
和ServerSocketFactory
?他们是private
而不是从课堂内暴露 - 多少测试是太多测试?如果测试他们的创作是我应该做的,我怎么测试从类的外部私人,非暴露(没有getter方法)创建对象?我的天真(阅读:未经测试)的假设是,我会创建一个测试类
extending
AbstractServer
;然后,我必须做出我正在测试的东西protected
,这半开始使它们成为private
。
迂腐:如果你在上课/课后写测试,那不是真正的TDD。 – millimoose
@millimoose几年前,我写了一门课,作为一个家庭作业项目。我正在用一些增强功能和GUI来重写它,以便与Swing一起玩。我知道我是如何实现它的,因为我有旧的代码,但我在(重新)实现之前正在执行测试;) – simont