【发布时间】:2015-04-16 13:48:33
【问题描述】:
假设你有一个班级RunMe。顾名思义,它是由另一个类运行的。让我们假设通过RunMe.run()。
RunMe 有一个带有 Data 的私有变量,用于运行不同的测试,让我们调用 ist data。
假设这个数据是由RunMe.initialize()初始化的。
之后,在run() 方法中,使用initialize 函数为data 设置的默认值运行第一个测试。让我们称这个测试方法为testWithDefaultValues。
我们现在想用一些自定义数据填充我们的data。假设我们使用fillData 执行此操作。
然后我们想使用我们新填充的数据执行另一个测试。让我们将此测试称为testWithFilledData。
此时我们的运行方法看起来像这样
public void run() {
initialize();
testWithDefaultValues();
fillData();
testWithFilledData();
}
你能看出这段代码看起来有多尴尬吗?它看起来和感觉都错了。一件事直接进入我的脑海:testWithFilledData() 或testWithDefaultValues() 的唯一原因实际上是按照名称假设的那样做,因为这些函数在run 中调用的顺序。这一定是错误的。
所以我应该消除initialize 和fillData 并在相应的测试功能中执行这些功能吗?
如果您考虑到将存在更多测试功能,每个测试功能都使用不同的数据集进行测试,所有这些都必须完全手动填充 (data.setField("fooField","fooValue);)。
有人能给出一个一般性的构想或想法,解释他将如何正确解决给定的任务吗?
现在我真的很难找到一种“感觉不错”且正确的模式。我现在做的一定是错的。
编辑:值得一提的是,测试功能不能是通用的。对于data 的每个不同变体,必须考虑不同的结果。
【问题讨论】:
-
你为什么要调用一个类
RunMe?类的实例有什么作用? -
这个类实际上并不叫RunMe,它只是一个例子。它是 Selenium 测试套件的一部分。另一个类应该运行大量的 Selenium-Tests(对于网站上存在的所有逻辑过程)。每个类(例如本例中的 RunMe)都在说明这种测试。所以类不是在测试自己,类是测试。