2014-10-08 35 views
0

假设测试代码(src/test/java)中的生产代码(src/main/java)和ClassXTest中的类ClassX。在一些测试方法中,我想篡改ClassX返回的方法之一,所以我覆盖了ClassX及其方法。我不想使用任何模拟框架或这个类是匿名的。是否有任何命名应如何命名这些类?测试代码中类的命名约定

+0

这没有任何意义;如果你正在测试'ClassX',你为什么要在测试过程中覆盖它? – 2014-10-08 22:22:32

+0

可以伪造它返回的值(例如,返回常量而不是访问WS或DB)或感知某些内容(例如,存储参数的值以便稍后可以检查)。 – 2014-10-09 05:07:34

+0

要测试一个抽象类,你也必须扩展它。 – 2014-10-09 05:33:22

回答

0

这些类被称为“测试特定的子类”,似乎没有任何命名约定。 http://xunitpatterns.com/Test-Specific%20Subclass.html给出了一些覆盖正在测试的类的示例。

+0

这样的类也被称为“测试子类”,我看到建议在名称前面添加了“测试”前缀。例如,生产类“Server”,测试用例类“ServerTest”和测试子类“TestingServer”。 – 2014-11-04 21:24:44

0

就个人而言,我会叫这些类:ClassXTestImpl

这不是世界上最伟大的命名惯例,但它足以表明它是测试代码,而不是预期由生产代码中使用。你也可以使它成为它正在使用的测试类的私有内部类,那么它甚至不会被你的生产代码访问。

通常,我不喜欢调用东西Impl,但在这种情况下,ClassX部分将定义该类实际执行的操作,TestImpl位仅用于将其标记为测试实现。


旁白有关部分嘲弄:

我知道你说你不想用嘲讽的框架,但如果你是为了更换method1使method2更容易测试和两种方法居住在同一个班级,那么你正在做的是一种部分嘲弄的形式,无论你是否使用框架来做。很难找到与特定框架无关的部分模拟的文档,所以我会提供EasyMock's documentation,但指出大多数模拟框架支持这种模拟。