问题标签 [testng]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2118 浏览

testng - 在 TestNG 中,有没有办法仅在特定测试方法之后运行清理方法?

一个例子:在执行密码更改测试后,我想使用一种清理方法将密码重置回原始密码。使用@AfterGroups 注释清理方法并将测试方法作为组中的唯一方法是一种方法,但感觉不对。

0 投票
2 回答
816 浏览

java - TestNG Ant 任务与 Surefire

我想知道在执行 TestNG 和 TestNG ant 任务时,surefire 有什么不同?原因是我在尝试运行扩展 JUnit 测试库的 TestNG 测试时看到了一致的行为差异(这是在此处描述的 TestNG 中运行 JBehave 测试的解决方法:http: //jbehave.org/documentation/faq/)。Surefire 错误地将我的测试检测为 JUnit 测试(可能是因为它的基础是 TestCase),而 Ant 任务运行良好。谁能提供有关 TestNG 如何处理这两种情况的见解?

测试如下:

0 投票
2 回答
4697 浏览

maven-2 - Maven - 添加自定义阶段以使用其他配置执行插件

我在一个 Maven 项目中有两组集成测试——自动测试和手动测试。手动测试很少但很乏味 - 它们需要拔掉服务器等的插头。我想为手动测试创建一个单独的目标,所以我可以运行类似mvn manualtests运行手动测试的东西。如果您只是运行一个普通的 Maven 构建mvn install,那么应该运行自动测试。

我已经用 TestNG annotation 注释了手动测试@Test(groups="manual"。现在的目标是有两种配置的 surefire 插件,一种运行绑定到构建测试阶段的自动测试,另一种运行绑定到我想调用的另一个自定义阶段的手动测试manualtests。似乎不可能将插件的执行绑定到不存在的阶段(即,未由 maven 预定义的阶段)。不能定义自己的阶段吗?

0 投票
2 回答
9447 浏览

java - 在 TestNG 中设置应用程序日志级别

我有一个使用 Commons Logging 进行日志记录的应用程序。它是用 Maven 构建的,并使用 TestNG 进行测试。我正在尝试在测试期间微调日志记录级别,但没有任何运气 - 无论我做什么,一切都设置为 INFO。我尝试在类路径上创建一个 logging.properties 文件,但它什么也没做。我还创建了一个 log4testng.properties 文件 - 正在读取这个文件(我知道这一点是因为在我故意向其中引入语法错误后 TestNG 显示错误)但其中的设置无效。

有什么建议么?


编辑:好吧,我还没有弄清楚根本问题(为什么 java.util.logging 忽略了我配置它的尝试),但是我能够通过在测试期间使 Log4j 可用,然后配置它来获得我想要的。我要结束这个问题,因为我现在真的不在乎。

0 投票
4 回答
10352 浏览

java - 执行 TestNG 测试时捕获 Log4j 输出

我正在执行 TestNG 测试,并且日志输出设置为DEBUG,因此如果发生故障,我可以准确检查出了什么问题。

问题是输出非常冗长,运行时会困扰所有人。我想捕获所有 Log4J 日志记录事件 - 这很容易 - 并且仅在测试失败时打印它们。此外,我需要考虑@Before/@After方法并为它们打印输出。

假设我已经有一个 Log4JLoggingEvent的 List ,如何仅在Test//方法失败After时打印它们?Before

0 投票
1 回答
2027 浏览

unit-testing - 在连续测试中加载数据集失败并出现“关闭会话”

我有 2 个测试类,都用unitils注释进行了注释

目标数据库是一个HSQLDB,它在一个带有testng注释的抽象超类方法中启动:

当测试运行程序(Maven Surefire)到达第二次测试时,数据库已正确实例化(我可以在日志中看到),但unitils或实际上dbunit无法加载数据集。

我很困惑为什么dbunit设法在第一个测试类中连接到HSQLDB,而在第二个测试类中却没有。

有人有线索吗?

谢谢!J。

0 投票
2 回答
3909 浏览

java - 将 Hashtable 数组转换为对象数组

我的问题是我无法将 Hashtable 数组转换为对象数组。这里的内容读取从 xls 文件中读取每一行,并以这种格式将其保存在哈希表数组中:

roleName=testRole981, admin=admin, projectName=Automateme, userPassword=aspiresys12, roleDesc=grant[testplan_execute],grant[testplan_create_build],grant[testplan_metrics], adminPass=admin, userName=mur

我想将该 hashTable 数组转换为一个对象数组,以便我可以在我的 testNG 测试用例中将它们作为 DataProvider 传递。

0 投票
1 回答
13372 浏览

java - TestNG 是否保证 @BeforeSuite 方法在 @BeforeTest 方法之前执行?

背景:我的目标是编写一个运行自包含的 TestNG-Selenium 系统(没有 Maven 或 Ant 插件的字符串;只有 Java)。它必须允许测试用例接受包括浏览器和域 URL 在内的参数。当TestRunner实例化这些测试用例时,浏览器和域用于获取 Selenium 对象以执行其测试。

@BeforeSuite问题:在尝试获取 Selenium 对象(在 a 中)之前,每个套件只有一个测试类成功获取域参数(在方法中@BeforeTest)。没有接收域的测试类有一个nullselenium 对象 b/c 它不能被实例化。

代码:每个 XmlClass 都包含在它们自己的 XmlTest 中,并且所有三个都包含在一个 XmlSuite 中。该套件包含的顺序为 TestClass1、TestClass2,然后是 TestClass3。测试类本身是 2 层抽象基类的子类,其中包括初始化注入变量并随后获取 Selenium 实例的功能。这样做的目的是用尽可能少的重复代码测试一个或多个应用程序(在多个域上)(即:Selenium 实例化在根基类中,因为它对所有测试都是通用的)。有关详细信息,请参阅以下方法。

输出:TestCase3 运行正确。TestCase1 和 TestCase2 失败。生成堆栈跟踪...

感谢您提供有关此问题的任何信息。

0 投票
12 回答
2932 浏览

java - 现在要为 Java 学习哪个 UnitTest 框架?

虽然我已经用 Java 编程了大约 3 年以上(不是日常,但至少我了解基础知识),但还没有真正进入单元测试领域......

我的工作现在更多地面向测试/问题分析,所以我认为一个好的 Java 单元测试框架将对这个角色很有帮助。

显然,在我的团队中没有关于使用哪个框架的正式规则。所以只是想知道,作为一个初学者,哪个框架是一个很好的快速入门的框架?

朱尼特?

测试NG?

或者是其他东西?

编辑:与亚马逊上的 TestNG 相比,JUnit 似乎有更多的印刷书籍作为参考。但目前我不知道它们在 Java 行业中的流行度/趋势。

0 投票
2 回答
742 浏览

java - 这应该是同步方法吗?

我正在使用 TestNG 并行运行测试,并希望小心助手类和实用程序可能出现的同步问题。据我所知,每个测试都是它自己的对象,由测试运行者透明地创建。因此,我不需要担心同步任何非静态的东西,因为它是在线程中创建的对象,因此对其他对象不可见。

但是,当我调用我编写的这个外部日志函数时,它是否需要同步?是否存在可能的竞争条件,其中线程 1 进入并设置 threadName="Thread-1",然后线程 2 进入并设置 SAME threadName 变量 = "Thread-2",然后线程 1 重新启动并打印出来“--foo | 线程 2”?我需要使它成为同步方法吗?