我们的团队的成员正在加紧进行单元测试,并且我们正在努力应用一些术语。我想确定一个特定模式的名称。我希望有一个已经被其他开发人员所接受,但如果不是,我想提出一个描述性的,并且会让测试策略更容易讨论。你称之为用于测试的内部类是什么?
此模式用于测试抽象方法的相当多,但在对象创建新对象时(对于DI不起作用或不需要的情况)也很方便。基本模式是使用扩展受测试类的内部类来公开受保护的方法。
考虑下面的代码(这是伪代码,基于Java,而应该转化为大多数语言):
要测试的类:
public class MyClass {
public void send() {
//do something
}
protected MailMessage createNewMailMessage() {
return new MailMessage();
}
}
测试:
public class MyClassTest {
private MyClass myClass = new TestableMyClass();
private MailMessage mockMessage = mock(MailMessage.class);
public void setup() {
((TestableMyClass)myClass).setMailMessage(mockMessage);
}
// Do some tests //
private class TestableMyClass extends MyClass {
private MailMessage mailMessage;
public void setMailMessage(MailMessage mailMessage) {
this.mailMessage = mailMessage;
}
protected MailMessage createNewMailMessage() {
return mailMessage;
}
}
}
那么,你称这种模式是什么? TestableMyClass是一个“模拟”对象,但由于它不是由模拟框架管理的,所以似乎应该有另一个术语来描述这种模式。任何建议或想法?
我所能所有'TestableMyClass'本着存根[1] [1] [这]:HTTP:/ /stackoverflow.com/questions/463707/what-are-the-differences-between-mocks-and-stubs-on-rhino-mocks – hvgotcodes