【发布时间】:2011-02-11 16:29:02
【问题描述】:
我将使用 Selenium RC 为网站重放一些测试。我想从 Java 测试框架中启动这些测试,以便我得到很好的报告,有多少测试失败了,等等。
我应该使用哪个 java 测试框架? JUnit 是用于此目的的首选框架吗?
【问题讨论】:
我将使用 Selenium RC 为网站重放一些测试。我想从 Java 测试框架中启动这些测试,以便我得到很好的报告,有多少测试失败了,等等。
我应该使用哪个 java 测试框架? JUnit 是用于此目的的首选框架吗?
【问题讨论】:
仅用于支持其中一个答案
雅虎将selenium + testng 用于自动测试网页。
Junit 与 Testng:
Testng 可以有更多的控制,例如分组测试用例,并行运行,重试失败的测试用例,更灵活地注释测试用例。
【讨论】:
以下是我的一些经验。
JUnit 具有允许减少样板代码数量的“规则”。例如,一个规则可以在测试之前启动一个 servlet 容器并在测试之后停止它,创建和注入一个 Selenium 实例等等。这使得测试更加优雅。
TestNG 支持组(及其依赖项)。这对于集成测试非常有用——例如,您可以在某些环境中关闭某些组。 JUnit 4.8 引入了可能类似的“类别”。
Spring Test 有一个非常好的“测试执行侦听器”方法,可以“准备”您的测试实例。这有点类似于 JUnit 规则。 Spring Test 也与测试框架无关,也就是说,您的测试在 JUnit 或 TestNG 上看起来几乎相同。还有类似于 TestNG 组的“配置文件”。
Here's 一个经过 Selenium 测试的 JSF 应用程序示例,基于 TestNG。也看看我的Hifaces20 Testing 包,也许你会发现一些有用的想法。
【讨论】:
我们将 Selenium 与 JUnit 结合使用。这种方法的美妙之处在于易于创建 JUnit 测试,因为我们将 Selenium 测试记录在 Selenium IDE 中,然后简单地将它们导出到 JUnit(尽管通常需要进行一些小的调整)。然后,您可以相当轻松地将它们集成到您的持续集成构建中,并设置一个工作以每小时运行一次或任何适合的方式运行它们。我喜欢 JUnit 方法的地方在于,我团队中的每个人都已经非常熟悉 JUnit,因此不需要学习曲线。
我还建议您查看Selenium Grid,它允许您并行执行测试,从而让您在更短的时间内完成更多任务,尤其是如果您可以利用在多台机器上执行它们的优势。
【讨论】:
我们为此目的使用了 JUnit,它运行良好。 Selenium 测试就像 JUnit 测试一样处理,并在 selenium 服务器上运行。
尽管 Selenium 测试似乎更接近于集成测试,因此如果它更适合您的需求,您应该评估一次 testNG。 TestNG 提供了更多的配置控制。在我们的案例中,我们对 JUnit 的 Web 驱动程序和设置方法很满意,因此我们没有转向 TestNG。
【讨论】: