使用不同的数据多次运行相同的 JUnit 测试用例
有没有办法告诉 JUnit 在继续下一个测试用例之前连续使用不同的数据运行特定的测试用例多次?
Is there there any way to tell JUnit to run a specific test case multiple times with different data continuously before going on to the next test case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
看看 junit 4.4 理论:
take a look to junit 4.4 theories:
听起来这是参数化测试的完美候选者。
但是,基本上,参数化测试允许您对不同的数据运行相同的测试集。
以下是一些关于它的优秀博客文章:
It sounds like that is a perfect candidate for parametrized tests.
But, basically, parametrized tests allow you to run the same set of tests on different data.
Here are some good blog posts about it:
最近我开始了 zohhak 项目。 它可以让你写:
Recently I started zohhak project. It lets you write:
一种更好的方法(允许您拥有多个测试方法)是将 JUnit 与 JUnitParams 一起使用:
您可以获得 junitparams 项目 此处。
A much better way (allows you to have more than one test method) is to use JUnit with JUnitParams:
You can get the junitparams project here.
在 JUnit 5 中,您可以使用 @ParameterizedTest 和 @ValueSource 来获取使用不同输入值多次调用的方法。
In JUnit 5 you could use
@ParameterizedTest
and@ValueSource
to get a method called multiple times with different input values.这是我写的一篇文章,展示了通过代码示例重复运行测试的几种方法:
重复运行 JUnit 测试
您可以使用 @Parametrized 运行程序,或使用帖子中包含的特殊运行程序
Here is a post I wrote that shows several ways of running the tests repeatedly with code examples:
Run a JUnit test repeatedly
You can use the @Parametrized runner, or use the special runner included in the post
我总是只创建一个根据参数执行测试的辅助方法,然后从 JUnit 测试方法调用该方法。 通常这意味着单个 JUnit 测试方法实际上会执行大量测试,但这对我来说不是问题。 如果您想要多个测试方法,每个不同的调用一个,我建议生成测试类。
I always just make a helper method that executes the test based on the parameters, and then call that method from the JUnit test method. Normally this would mean a single JUnit test method would actually execute lots of tests, but that wasn't a problem for me. If you wanted multiple test methods, one for each distinct invocation, I'd recommend generating the test class.
如果您已经在测试类中使用了 @RunWith,您可能需要查看 这个。
If you are already using a
@RunWith
in your test class you probably need to take a look at this.如果您不想或无法使用自定义运行器(例如,您已经在使用其他运行器,例如 Robolectric 运行器),您可以尝试此 数据集规则。
If you don't want or can't use custom runner (eg. you are already using an other runner, like Robolectric runner), you can try this DataSet Rule.