当前位置: 首页 > 面试题库 >

JUnit4是否已开始支持测试顺序?是故意的吗?

蔺沛
2023-03-14
问题内容

JUnit的新手(实际上是JUnit 4)并遇到了执行测试的套件方式

@RunWith(Suite.class)
@Suite.SuiteClasses(
        {                               
                CreateNewProfile.class,
                EditProfile.class,

        })
public class ProfileTestSuite {

}

这是我在新雇主浏览测试代码库时遇到的代码示例。在执行期间,我资助-
首先执行CreateNewProfile测试,然后执行EditProfile,这确实有意义,但随后会引入测试之间的依赖关系。

几个月以来,我一直在遵循非依赖性测试机制(尽管我以前使用的是TestNG而不是JUnit),并且希望EditProfile也能够独立执行。也就是说,编辑配置文件应负责创建配置文件,然后对其进行编辑,然后声明操作。

我的问题是-Junit 4引入了测试订购功能。这个功能是预期的还是一个复活节彩蛋,因为我一直觉得JUnit =独立测试。


问题答案:

除了您通过所说的方式外,没有JUnit不支持测试排序Suite。这仅定义了执行测试 的顺序。这已经存在了很长时间,包括JUnit 3
Suite类。

为了获得更完整的解释,我们需要在这里谈论三件事:

  1. 测试套件中测试类的顺序
  2. 通过Eclipse或Maven反射找到测试类的顺序
  3. 测试类中测试方法的顺序(用@Test注释)。

测试套件中测试类的顺序

当您指定要在测试套件中执行的类的列表时,您将定义一个数组,并且这些测试类将按顺序执行,除非您执行并行执行。不幸的是,这允许在测试类之间引入依赖关系。

通过反射找到测试类的顺序

在类路径中搜索类时,不能保证找到它们的顺序,因此不能依赖它们。搜索实际上不是JUnit,而是Eclipse Junit插件或maven
surefire或failsafe。

测试类中测试方法的顺序

JUnit不保证类中测试的执行顺序。在大多数情况下,在大多数JVM
7之前的版本中,使用反射找到它们的顺序是声明顺序,即它们在文件中的顺序。这是它们执行的顺序。但是,对于JVM
7,将不再保证这一点,因此不会有一致的顺序。有一个github问题#293,针对可预测性的测试方法排序已打开,并提供了建议的解决方案,而junit邮件列表上有一个线程:按字母顺序排列测试方法的运行顺序?。因此,您不能依赖于将使用JUnit执行测试的顺序,但这正在讨论中。



 类似资料:
  • 主要内容:1 概述,2 测试执行顺序,3 例子,4 结论1 概述 在本指南中,我们将学习如何按顺序执行测试。默认情况下,JUnit以任何顺序执行测试。 2 测试执行顺序 要更改测试执行顺序,只需使用@FixMethodOrder注释测试类并指定可用的MethodSorters之一: @FixMethodOrder(MethodSorters.JVM):按照JVM返回的顺序保留测试方法。此顺序可能因运行而异。 @FixMethodOrder(Method

  • 我在Unity中有项目,使用Mapbox, Mapbox包含以下支持库:support-v4-25.1.0.aar 此库以.aar文件的形式提供,而不是作为gradle命令 尝试构建项目时,我收到此错误: 无法确定任务的依赖项:启动程序:lintVitalRelease。< br >无法解析配置的所有项目:launcher:debuguntimeclass path。< br >无法转换支持-v4

  • 问题内容: 目前,我正在查看Selenium Server,但似乎没有注意到支持无头浏览器测试的驱动程序。 除非我弄错了,否则它不支持。如果您使用的是X,则可以创建一个虚拟的帧缓冲区来隐藏浏览器窗口,但这并不是真正的无头浏览器。 谁能启发我?Selenium是否支持无头浏览器测试? 问题答案: 您无需使用PhantomJS替代Selenium。Selenium包括一个在GhostDriver平台上

  • 我对测试有点陌生(吓人,嗯),所以如果这是无知的话,请原谅我。 根据对测试框架所做的更改,spock spring 0.7-groovy-2.0是否与新的spring 3.2版本兼容? 我已经查看了正在测试的Spring 3.2文档: 以及新闻下的斯波克文档: 但是,没有任何东西可以帮助我判断新的Spring3.2测试框架是否仍然允许以Spring3.2测试(Spring3.2文档第11.3.4节

  • 问题内容: 以下代码以相同的插入顺序为我提供了输出。我阅读了Javadoc,他们甚至没有谈论插入顺序。有人可以帮助我获取正确的信息。 问题答案: 不,不是的。要保留插入顺序,请改用(javadoc)。 而且,现在优先于,因为它具有不必要的并发开销。(请参见HashMap和Hashtable之间的区别?。)

  • 问题内容: 我有需要在各种不同的登台环境中运行的JUnit测试。每个环境都有不同的登录凭据或该环境特定的其他方面。我的计划是将环境变量传递到VM中以指示要使用的环境。然后使用该var从属性文件中读取。 JUnit是否有任何内置功能来读取.properties文件? 问题答案: Java内置了读取.properties文件的功能,而JUnit内置了在执行测试套件之前运行安装代码的功能。 java阅读