我开始使用一些测试驱动的开发实践,并且在决定是否以及如何测试我的这段代码时遇到问题。
我有一个AbstractServer
包含ServerSocketFactory
and的类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 ...
theServerSocket
和 the ServerSocketFactory
areprivate
都不会暴露在这个类之外。
我的问题:
我是否应该创建测试来检查我是否真的创建了
ServerSocket
和ServerSocketFactory
?他们在private
课堂上并没有暴露出来 - 多少测试是太多的测试?如果测试他们的创建是我应该做的事情,我如何从类外部测试私有的、非公开的(无 getter 方法)对象创建?我天真(阅读:未经测试)的假设是我会创建一个测试类
extending
AbstractServer
;然后,我必须制作我正在测试的东西protected
,这半挫败了制作它们private
的初衷。