cte*_*ekk 87 junit testng unit-testing
JUnit 4和TestNG曾经具有可比性.两个测试框架的优缺点是什么?
Jer*_*oek 29
我今天正在比较TestNG和JUnit4,我可以用我在测试框架方面的有限经验指出的主要优点是TestNG有一种更优雅的方式来处理使用数据提供者概念的参数化测试.
据我所知,JUnit4你必须为你想要测试的每组参数创建一个单独的测试类(运行@RunWith(Parameterized.class)
).使用TestNG,您可以在一个测试类中拥有多个数据提供程序,因此您可以在单个测试类中保留单个类的所有测试.
到目前为止,我唯一可以指出的是TestNG优于JUnit4.
Intellij IDEA开箱即用,支持TestNG和JUnit.但是,Eclipse仅支持开箱即用的JUnit,并且需要安装TestNG插件才能使其正常工作.
但是,我遇到的一个更烦人的问题是,PowerMockTestCase
如果你使用PowerMock模拟测试中的依赖项,你的测试类需要扩展.显然,有一些方法可以配置您的测试框架在通过特殊方法或通过testng.xml
套件定义使用PowerMock时需要了解的对象 - 工厂,但这些似乎在目前被打破.我不喜欢测试类扩展测试框架类,它似乎是hackish.
如果您不使用PowerMock,这当然不是问题,但总而言之,我得到的印象是JUnit4得到更好的支持.
Jil*_*urp 17
根据我对这两个框架的经验,testng有一些方便的功能,JUnit团队已经拒绝实施多年.出于这个原因,我更喜欢JUnit.转换为testng非常简单,因为它基本上支持JUnit中的所有内容(甚至还有eclipse的转换器插件),由于缺少这些功能,转换回JUnit并不是那么好.
在testng中,@BeforeClass
方法不是静态的,而是在该类运行的测试之前执行,而不是在加载测试类时(JUnit行为).我曾经有一个JUnit项目,所有的数据库测试(几十个)都在一开始就初始化了数据库,这是非常愚蠢的行为.在JUnit社区中存在很多支持和反对的争论.它的要点是每个测试方法都应该有自己的测试夹具,因此你不应该有一个非静态的beforeAll样式方法,因为这样可以让你偷偷设置一次实例变量,然后在你的所有测试中使用它.有效,但对集成测试非常烦人.TestNG为用户提供了选择.根据设计,Junit没有令人讨厌的东西.
Testng数据提供程序比JUnit等效程序更灵活.您可以为每个测试指定哪个数据提供者方法应该提供输入,而不是像JUnit那样为整个类提供一个适合所有方法.因此,您可以在一个类中为您的测试提供正面和负面案例数据提供程序.很高兴有.
你可以@Test
在testng中标记一个类,这意味着:每个公共方法都是一个测试.在Junit中,您需要复制/粘贴@Test
每个方法.
两者都令人烦恼的是hamcrest与JUnit捆绑在一起的方式以及JUnit与testng捆绑在一起的方式.maven中有更改的罐子,没有这个问题.
我对这两个框架的担心是它们似乎都停止了发展.发布越来越少,并且往往具有越来越不值得注意的功能.例如,整个BDD运动似乎对这两个框架都没有什么影响.此外,JUnit可以简单地采用我上面列出的大部分内容.没有好的技术理由为什么JUnit不能实现任何这些东西; JUnit背后的人只是选择不实现这些东西.这两个项目似乎也缺乏对未来发展方向的看法,他们似乎很乐意在过去的几年里做一些小调整.
归档时间: |
|
查看次数: |
44629 次 |
最近记录: |