2009-08-25 53 views
4

我已经写过使用硒进行功能测试的测试。我正在使用Java。我希望能够在测试之间创建结构。可以用jUnit或TestNG来完成吗?如何使用硒(junit或testng)创建结构化自动测试?你最好的做法是什么?

想能够创建测试结构将产生报告是这样的:

Top test FAIL 
- Module1 test PASS 
-- Module1Class1 test PASS 
-- Module1Class2 test PASS 
--- Module1Class3Method1 test PASS 
--- Module1Class3Method2 test PASS 
- Module2 test FAIL 
-- Module2Class1 test FAIL 
--- Module2Class1Method1 test PASS 
--- Module2Class1Method2 test FAIL 
--- Module2Class1Method3 test PASS 
+0

我有使用Selenium进行功能测试的测试。我用Selenium IDE或手动生成了这些。我将它们导出到java。我正在使用Selenium RC。我可以将它们作为Java应用程序运行,或者作为jUnit测试来从中获取报告。问题是我有很多类和很多测试。我想通过模块来运行这些模块,不仅有来自模块级测试的结果(通过/失败),而且来自以下类中的所有测试。 AFAIK jUnit只允许平面测试结构。所以我想知道testNG。这是否更清楚? – 2009-08-25 08:55:42

回答

1

我只是有找到了这个问题的解决方案,所以我把这里的链​​接,以便其他人可以从中受益。 beust.com 虽然我还没有尝试过。

更新: 尝试它,我可以产生这样的结果之后:

Module1.Class3.Method1 PASS 
Module1.Class3.Method2 PASS 
Module2.Class1.Method1 PASS 
Module2.Class1.Method2 FAIL 
Module2.Class1.Method3 PASS 

失败的方法名是“方法2”,它坐落在班“的Class1”,它是包“单词数”。

我已经使用TestNG的(很多吧)的所有标准的可能性+我已经覆盖使用ITestResult方法TestListenerAdapter:的getName()和getTestClass()的getName()

它不是一个真正的结构我正在寻找,但一点解析可以告诉我失败的地方。作为一个加号,我不必为其中包含类和包名称的方法命名。

+0

+1看起来不错。感谢您的链接 – bastianneu 2009-08-28 14:10:44

1

你不能,因为这不是硒解释测试的格式。 Selenium支持几种不同的语言语法,最简单的是JS和HTML表格行。如果您不想手动编写测试以适应特定的语言语法,则可以使用Firefox的Selenium IDE的记录功能。

+0

嗨。谢谢你的回答。但我没有问Selenium的语法。这是junit/testng测试结果的问题。也许我应该从说明中删除有关Selenium的信息,不要混淆任何人;) – 2009-08-25 08:30:32

+0

单元测试是从代码中进行测试以分析代码是否按预期执行的测试。这不是Selenium测试的结果。 Selenium测试浏览器在呈现后看到的内容,而不是写入交互式代码的哪些部分,而是完整地编写了哪些应用程序。 – 2009-08-25 08:44:35

1

我建议您查看JUnit或TestNG XML报告。您应该可以使用一些XSLT对它们进行转换,以提供您所需格式的新HTML报告。

0

我无法完成肯定,如果我是正确的here..but我认为这可以帮助你: http://www.jamesnetherton.com/blog/2007/07/02/Creating-a-Selenium-test-suite/

你可以组它你的测试在一个非常容易structered方式。

+0

感谢您的想法。我的问题更像是您的网站上对此博客帖子的一条评论: 发布者Madhavi |星期二22 1月9日上午9:01 “(...)你知道任何方式将一个测试套件插入另一个测试套件,我需要为每个功能创建更小的测试套件,并将这些测试套件包含到主测试套件中。 – 2009-08-25 20:25:14

+1

从我的知识来看,这是不可能的,但也不是必需的。你必须围绕这些测试类设计你的代码,而不是以其他方式。对不起,我认为你的方法可能很复杂。但解决方案是设计特殊的测试套件并将它们放入包中。所以你可以通过软件包测试软件组件。希望这有助于... – bastianneu 2009-08-26 08:13:45

+0

谢谢:) 背后的想法是不仅要对每个功能进行小测试,还要能够运行在level1上分组的所有小组,然后在level2上分组的几个小组等等。如果level2上的组(如同其中的所有组)一样失败 - 那么有可能挖掘到level1上的组,然后进行失败的一个小测试。 编写功能测试不是通常的做法吗? – 2009-08-27 13:18:06

1

在TestNG中,您可以通过配置文件(testng.xml)来定义套件,该套件应符合您的需求。您可以将其组织为每个模块都有一个测试组。测试组中的失败会将整个测试视为失败。但我想你也可以在JUnit中这样做,我并不太熟悉。

TestNG的好处在于,您可以定义依赖关系。这些将强制执行测试执行的某个逻辑顺序,并会跳过依赖于失败测试的测试,而不是让它们失败。使分析变得更容易,测试更早结束,因为所有那些可能注定要失败的测试都将被搁置。但是就像我之前说过的,我认为你也可以在JUnit中做到这一点。这更多的是品味的问题。如果您另有决定,将JUnit转换为TestNG或反之亦然并不是一件大事。

相关问题