我正在使用Selenium和C#在VS 2010中编写一些单元测试。我有几个测试用例。例如,我的一些测试用例是:
启动网站:http://localhost:8080。验证登录页面是否存在。输入用户名和密码,然后登录。
检查是否存在“搜索”标签。单击“搜索”选项卡。验证标签搜索图书,搜索图像和搜索网络是否存在。
点击搜索图书。输入“C-Sharp for Dummies”。单击搜索。验证是否返回了适当的结果。
现在,我的问题是:为上述每个测试用例创建单独的类是一个更好的主意,还是将它们组合到一个类更好,并且只有单独的方法?
所有三个测试用例都是相互关联的。我的意思是,执行#2需要#1首先完成,而#3需要#2首先完成。如果我创建单独的类,我相信我需要调用类#2中的#1中的方法,并调用类#3中的#1和#2中的方法。
我不太确定这对此有什么好主意。提前谢谢。
答案 0 :(得分:1)
如果测试是相关的,我会将它们保存在一个文件中,但这是假设你有多少测试,因为我不想只有一个文件有大量测试,所以我会逻辑地把相关测试在单独的文件中。如果你现在没有太多的测试,我就不会对此感到难以置信。
您也可以尝试使用WatiN替代Selenium。
答案 1 :(得分:1)
如果您使用NUnit之类的东西来控制硒测试,那么第1点可以在SetUp
内,因为我们可以假设所有(或大多数)测试都需要登录才能进行任何东西。由于如果失败,所有测试都将失败,因此不需要进行独立测试。
如果你考虑第2点和第3点之间的相互作用,就会有一些交叉,并且有一些独立的测试。
如果你考虑交叉测试(点击Search Books链接),第3点依赖于第2点在运行之前运行,因此没有必要进行两次单独的测试,如果测试2失败则测试3将始终失败。
在第2点,您正在测试三个链接出现,但在测试3中您只是单击其中一个,因此第2点可能会失败但第3点成功,因此它们应该是单独的测试。但是第3点并不完全取决于在第2点。
就个人而言,如果您还要测试“搜索图像”和“搜索网络”,那么您有两个选择,那么您根本就不应该使用第2点。链接的可见性断言和链接的点击都应该融入第3点。
如果您不打算测试“搜索图像”和“搜索网络”,则可以使用第2点。但是,测试3不应该调用第2点的方法,因为它会测试第3点不关心的额外功能。它应该假设“搜索书籍”链接在那里,并且独立于第2点点击它。