Tag: testng

java.lang.IllegalStateException:前面的方法调用getMessage(“title”)缺少行为定义

我正在使用EasyMock(版本2.4)和TestNG来编写UnitTest。 我有一个以下场景,我不能改变定义类层次结构的方式。 我正在测试扩展ClassA的ClassB。 ClassB看起来像这样 public class ClassB extends ClassA { public ClassB() { super(“title”); } @Override public String getDisplayName() { return ClientMessages.getMessages(“ClassB.title”); } } ClassA代码 public abstract class ClassA { private String title; public ClassA(String title) { this.title = ClientMessages.getMessages(title); } public String getDisplayName() { return this.title; } } ClientMessages类代码 public class ClientMessages { private […]

注释属性必须是类文字? 为什么? 常数也应该没问题

有人可以解释为什么String和Class注释参数的预期不同吗? 为什么编译器需要Classes的文字,wherby也接受字符串的常量? 使用Spring的@RequestMapping的工作示例: public class MyController { public static final String REQUEST_MAPPING = “/index.html”; @RequestMapping(MyController.REQUEST_MAPPING) // ALL OK! … } 使用TestNG的@Test的WTF示例: public class MyControllerTest { public static final Class TEST_EXCEPTION = RuntimeException.class; @Test(expectedExceptions = MyControllerTest.TEST_EXCEPTION) // compilation error, WTF: // The value for annotation attribute Test.expectedExceptions must be a class literal … } 什么工作当然是@Test(expectedExceptions = […]

你如何模拟JavaFX工具包初始化?

[序言:道歉,这里有很多代码,其中一些代码可能与此问题无关,而某些代码对于理解问题可能缺失; 请评论,我会相应地编辑问题。] 环境:Ubuntu 14.10 x86_64; Oracle JDK 1.8u25。 unit testing库是TestNG,版本6.8.13; Mockito是版本1.10.17。 在我的GUI应用程序中,JavaFX称之为“控制器”的东西是非常被动的,因为这个“控制器”(我称之为“显示器”)真正做的唯一事情就是发送事件。 现在,当收到需要GUI更新的事件时,它是另一个类,我称之为视图,它负责更新GUI。 简而言之: 显示 – >演示者 – >视图 – >显示 我有两个unit testing: 显示 – >主持人; 主持人 – >查看。 所以,我在这方面已经被覆盖了(我可以改变显示器的优势,这就是我这样做的原因)。 但现在我尝试测试“视图 – >显示”部分; 我是SOL。 作为说明,这里是视图类: @NonFinalForTesting public class JavafxTreeTabView extends JavafxView implements TreeTabView { private final BackgroundTaskRunner taskRunner; public JavafxTreeTabView(final BackgroundTaskRunner taskRunner) throws IOException { […]

TestNG迭代测试数据而不是测试方法

将DataProvider与多个TestNG方法一起使用时,每个方法都按顺序运行所有数据集。 相反,我想迭代数据集并在每次迭代时执行所有方法。 我不在乎结果是显示每个测试方法的结果还是每个方法的运行摘要。 我已经尝试过这个选项 order-by-instances=”true” 在suite.xml中没有成功。 示例代码: public class TestNGTest { @DataProvider(name = “dp”) public Object[][] createData(Method m) { return new Object[][] { new Object[] { “Cedric” }, new Object[] {“Martina”}}; } @Test(dataProvider = “dp”) public void test1(String s) throws InterruptedException { System.out.println(“test1 ” + s); Thread.sleep(1000); } @Test(dataProvider = “dp”) public void test2(String s) […]

使用MessageDigest SHA-256的POI XSSF / XLSX散列不确定性

使用MessageDigest SHA-256实现获得POI XLSX格式的确定性哈希值似乎存在问题,即使对于空的ByteArray流也是如此。 这种情况在数百次甚至数千次迭代后随机发生。 用于重现问题的相关代码段: // TestNG FileTest: @Test(enabled = true) // indeterminism at random iterations, such as 400 or 1290 public void emptyXLSXTest() throws IOException, NoSuchAlgorithmException { final Hasher hasher = new HasherImpl(); boolean differentSHA256Hash = false; for (int i = 0; i < 10000; i++) { final ByteArrayOutputStream excelAdHoc1 = BusinessPlanInMemory.getEmptyExcel("xlsx"); final ByteArrayOutputStream […]

为JERSEY Web服务编写测试用例的最佳方法是什么?

我有一个用Jersey库实现的JAX-RS Web服务,现在我想测试它。 为了做到这一点,我想通过使用模拟服务预先初始化我的测试来托管这项服务。 托管此类服务和执行测试调用的最佳方法是什么? @Path(“/srv”) public class MyService { @GET public void action(@Context UriInfo uri) { … } } @Test public void myTest() { MyService service = new MyService(); service.setSomething(…); // How do I host it? // How do I call it? }

检测testng @AfterMethod中的测试失败

如果测试失败,我想截取屏幕截图。 我想将这个逻辑添加到用@AfterMethod注释的方法,而不是用try / catch块包装所有测试方法。 如果当前测试失败,如何在使用@AfterMethod注释的方法中检测?

TestNG @BeforeMethod方法在驻留在超类中并且运行特定组时未调用

我正在尝试使用一个组来运行与我正在处理的“当前”相关的测试子集。 问题是,如果我使用超类在@BeforeMethod中进行一些设置,则该方法在我运行所有测试时运行,但在我仅使用指定的组“current”运行时则不运行。 因此,当我运行所有测试时,emptyTest失败,因为调用了@BeforeMethod,当只运行组current时,不调用该方法。 注意:如果我将@Test(groups = {“current”})添加到子类,那么它确实运行 – 但是,它运行所有未标记为“current”的子类,这违背了“当前”组的目的。 如果有更好的方法来实现此行为,我对所有解决方案持开放态度。 谢谢,赎金 超类: public class TestNGSuperclass { @BeforeMethod public void failingToShowThatItIsNotRun() { Assert.fail(); } } 子类: @Test(groups = {“current”}) public class TestNGCurrentGroup extends TestNGSuperclass { public void emptyTest() {} } TestNG配置:

在更新到MacOS Sierra之后,带有Surefire的Maven(TestNG)很慢

在将MacBook Pro更新到MacOs Sierra之前,命令: mvn clean install -U 运行大约40秒,在几个maven子模块中进行了数百次测试。 更新到MacOS Sierra后,没有更改代码,相同的命令需要12分钟。 在我看来,当Surefire插件打印当前模块的结果时,它会在继续之前挂起2-3分钟。 到目前为止,测试执行的速度与更新MacOS Sierra之前的速度一样快。 从模块开始打印的TestNG结果示例: Tests run: 101, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 167.854 sec Results : Tests run: 101, Failures: 0, Errors: 0, Skipped: 0 有谁知道这背后的原因?

如何优化testng和seleniums测试

对于我的实习,我必须使用TestNG和selenium来测试网络应用程序。 但我有一个问题,有时候selenium或浏览器因某些随机原因无法工作,因此工作测试被标记为“失败”。 为了避免这种情况,我可以使用注释@Test(invocationCount = 4, successPercentage = 25) ,然后如果测试成功一次,测试被标记为“Succeed”,那很好,但问题是这个解决方案会倍增时间对于4的测试,这不是很有效。 我可以做些什么来减少测试时间,是写一些规则“如果测试失败,重新运行此测试(并且只有在测试失败时),并且如果它在第二次,第三次或第四次工作,那么将此测试标记为“成功”“因此我可以避免这些随机错误。 但是我没有找到如何编写这个规则,我看到我们可以添加一个监听器,所以我们有一个名为“ onTestFailure ”的方法,所以当测试失败但我不知道如何重新启动时我可以做一些事情。运行测试。 我还找到了testng-failed.xml,其中保存了所有失败的测试,因此我们可以运行这个xml文件来重新运行这些测试,但是这将删除上一次运行的报告,但我只想要标记失败的测试如果第二次运行成功,则“成功”。 (我已将testNG / selenium集成到Jenkins中,所以我有一个包含所有测试的图表,所以这个方法不是很适应,但这种方法不会将测试时间乘以4,这就是我想要的) 所以如果你有任何关于如何做到的线索,那将是非常好的。