Unit testing Mockist tdd:当协作者只能在UUT内部构建时,如何测试UUT?
我正在尝试对一个名为StringReader的Java对象进行行为测试。代码如下所示:Unit testing Mockist tdd:当协作者只能在UUT内部构建时,如何测试UUT?,unit-testing,mocking,tdd,bdd,Unit Testing,Mocking,Tdd,Bdd,我正在尝试对一个名为StringReader的Java对象进行行为测试。代码如下所示: public interface CharReader { public char readChar(); } public class ByteArrayCharReader implements CharReader { public ByteArrayCharReader(byte[] bytes); public char readChar(); } public class
public interface CharReader {
public char readChar();
}
public class ByteArrayCharReader implements CharReader {
public ByteArrayCharReader(byte[] bytes);
public char readChar();
}
public class StringReader {
public String readString(byte[] bytes);
}
StringReader的协议/责任是:
- 调用readString时,StringReader应重复调用CharReader.readChar()从字节数组中读取字符,直到遇到空终止字符或最大字符数为20为止。这个想法是StringReader不应该为正确的unicode字符解码中的所有完整内容而烦恼,这样的责任就委托给了字符阅读器
ByteArrayCharReader
,而只需注入工厂,工厂的纯工作是提供请求的读卡器的实例:
public class ReadersFactoryImpl implements ReadersFactory {
public CharReader CreateByteReader(byte[] content) {
return new ByteArrayCharReader(content);
}
}
就这些。您可以轻松地模拟它并设置它,以便它返回另一个模拟。测试StringReader
是否按预期调用其他读取器就足够了