Java方法别名
我正在开发单元测试,当涉及到测试数据的创建时,它可以从可重用性中受益匪浅。然而,对于相同的测试数据(API参数),我需要做不同的事情(API调用)
我想知道以下习惯用法在Java中是否可行
Class RunTestScenarios {
void runScenarioOne (A a, B b, C c) {
........
}
void runScenarioTwo (A a, B b, C c) {
........
}
void runScenario (/* The scenario */ scenarioXXX) {
A a = createTestDataA();
B b = createTestDataB();
C c = createTestDataC();
scenarioXXX(a, b, c);
}
public static void main (String[] args) {
runScenario(runScenarioOne);
runScenario(runScenarioTwo);
}
}
基本上,我不想在任何地方重复以下内容:
A a = createTestDataA();
B b = createTestDataB();
C c = createTestDataC();
据我所知,这样的别名(scenarioXXX)是不可能的,但我很乐意被纠正,或者如果有人可以建议可能的设计替代方案来实现这一效果
顺便说一句,我知道命令模式来完成这项工作。但不是我想要的
谢谢, 美国
# 1 楼答案
实现这一点的一种方法是使用intefaces:-
runScenario()
方法以接受该接口作为参数李>通常,java中的单元测试是通过使用jUnit来完成的,如果您还不知道的话。有许多可用的教程,其中一个可以在here找到
# 2 楼答案
我不确定是否能得到您所需要的,但在我看来,您可以使用TestNG提供的
DataProvider
是这样的:
然后,您可以为您的数据提供商:
就是这样,当你运行你的测试时,它们会被正确的参数调用,这些参数只会被创建一次。虽然在这个目录中有很多有用的资源,但在这个目录中有很多这样的资源
您只需运行类中的所有方法
请在此处阅读更多信息:
http://testng.org/doc/documentation-main.html#parameters-dataproviders
顺便说一句:TestNG作为插件包含在Intellj IDEA中
# 3 楼答案
setUp
和tearDown
方法为每个测试初始化新对象李># 4 楼答案
不,在Java中不能这样做。没有lambda的支持(不要屏住呼吸…)。您可以在Scala中这样做,例如使用ScalaTest。可能在其他一些JVM语言中
在Java中,习惯用法是用匿名类包装这些函数,可能实现一个定义要运行的方法的接口