在单元测试中如何断言“N”异常?(How to assert “N” exceptions have been thrown in this unit test?)

编程入门 行业动态 更新时间:2024-10-09 21:19:16
在单元测试中如何断言“N”异常?(How to assert “N” exceptions have been thrown in this unit test?)

我有以下单元测试, 几乎可以正常工作:

@Test(expectedExceptions = {IllegalArgumentException.class}, expectedExceptionsMessageRegExp = PasswordValidator.INVALID_PASSWORD) public void testInvalidPasswordsThrowException() throws Exception { for (String invalidPassword: getInvalidPasswords()){ new LaxPasswordValidator(invalidPassword); } } private String[] getInvalidPasswords() { return new String[] {INVALID_PASSWORD_1, INVALID_PASSWORD_2, INVALID_PASSWORD_3, INVALID_PASSWORD_4, INVALID_PASSWORD_5, INVALID_PASSWORD_6, INVALID_PASSWORD_7, INVALID_PASSWORD_8, INVALID_PASSWORD_9, INVALID_PASSWORD_10}; }

正如您所看到的,它只是断言new LaxPasswordValidator(invalidPassword)按预期工作并引发异常。

问题:它只是考虑了INVALID_PASSWORD_1 ,所以它在第一次迭代中停止; 它会启动异常,但不会继续检查其他密码。 我怎样才能让它们全部测试? 谢谢

I've got the following unit test, which works almost fine:

@Test(expectedExceptions = {IllegalArgumentException.class}, expectedExceptionsMessageRegExp = PasswordValidator.INVALID_PASSWORD) public void testInvalidPasswordsThrowException() throws Exception { for (String invalidPassword: getInvalidPasswords()){ new LaxPasswordValidator(invalidPassword); } } private String[] getInvalidPasswords() { return new String[] {INVALID_PASSWORD_1, INVALID_PASSWORD_2, INVALID_PASSWORD_3, INVALID_PASSWORD_4, INVALID_PASSWORD_5, INVALID_PASSWORD_6, INVALID_PASSWORD_7, INVALID_PASSWORD_8, INVALID_PASSWORD_9, INVALID_PASSWORD_10}; }

As you can see, it is just asserting that new LaxPasswordValidator(invalidPassword) works as expected and throws an exception.

Problem: It is just taking INVALID_PASSWORD_1 into account, so it stops in the first iteration; it launches the exception but does not continue checking the other passwords. How can I make it test them all? Thanks

最满意答案

您必须将方法注释为@DataProvider

@DataProvider(name = "invalid-passwords") public Object[][] getInvalidPasswords() { return new String[][]{ {"INVALID_PASSWORD_1"}, {"INVALID_PASSWORD_2"}, {"INVALID_PASSWORD_3"} }; }

并注释@Test方法以将此数据提供者用于参数。

@Test(expectedExceptions = {IllegalArgumentException.class}, expectedExceptionsMessageRegExp = PasswordValidator.INVALID_PASSWORD, dataProvider = "invalid-passwords") public void testInvalidPasswords(String password) throws Exception { new LaxPasswordValidator(password); }

You must annotate the method as @DataProvider

@DataProvider(name = "invalid-passwords") public Object[][] getInvalidPasswords() { return new String[][]{ {"INVALID_PASSWORD_1"}, {"INVALID_PASSWORD_2"}, {"INVALID_PASSWORD_3"} }; }

and annotate the @Test method to use this dataprovider for the parameters.

@Test(expectedExceptions = {IllegalArgumentException.class}, expectedExceptionsMessageRegExp = PasswordValidator.INVALID_PASSWORD, dataProvider = "invalid-passwords") public void testInvalidPasswords(String password) throws Exception { new LaxPasswordValidator(password); }

更多推荐

本文发布于:2023-07-30 13:58:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1338772.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:断言   单元   异常   测试中   assert

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!