你能在同一个测试/框架中混合使用TestNG和JUnit Assertions吗?

时间:2017-05-03 10:28:46

标签: selenium selenium-webdriver junit testng

您可以在同一个测试/框架中将TestNG和JUnit断言混合在一起吗?

例如,假设我已经开发了一个框架,是否可以拥有以下内容:

  • 使用JUNit Assertions的TestNG类
  • 使用Junit和TestNG断言的TestNG?

感谢您的帮助

4 个答案:

答案 0 :(得分:1)

我认为简短的回答是否定的。如果您注意到使用@Test注释将方法标记为测试时,系统会提示您导入哪个框架。断言也是如此。想想看,如果提示使用Junit断言,Testng测试将无法“记录”结果。因此,在使用Testng @Test注释编写测试时; Assertion自动默认为Testng断言。 enter image description here

在OP的评论之后

更新:

Gbru检查你的\ projectFolder \ test-output \ junitreports 您正在寻找的xml可能已经存在..

取自: testNG doc Junit reports

6.2.3 - JUnitReports

TestNG包含一个侦听器,它接收TestNG结果并输出一个XML文件,然后可以将其提供给JUnitReport。这是一个示例,以及创建此报告的ant任务:

<target name="reports">
  <junitreport todir="test-report">
    <fileset dir="test-output">
      <include name="*/*.xml"/>
    </fileset>

    <report format="noframes"  todir="test-report"/>
  </junitreport>
</target>

答案 1 :(得分:1)

答案是NO。您可以一次使用TestNG或JUnit。你不能一次整合两者。

答案 2 :(得分:1)

请记住两个框架的本质:它们执行测试用例。

当然,您可以将任何您想要的注释放入代码中。但重点是:这些注释本身意味着没有。它们只是类/方法定义上的标记

底层的框架,在运行时检查它们的存在,并在找到这个或那个注释时做“某事”。

含义:为了JUnit resp。 TestNG注释在运行时产生所需的效果...您必须在JUnit或TestNG框架内运行测试。但是 - 你不能在相同的源代码中在同一个JVM中并行运行这两个框架。

换句话说:如果需要这样做,那么你必须将你的测试用例分成不同的桶:一个用于JUnit测试;一个用于TestNG测试。但是忘记在较低级别上混合的事情!

即使技术上可以在一个JVM中“一起”运行两个框架 - 你仍然想要这样做。仅仅因为这些框架并非旨在支持这一要求;因为没有其他人这样做;因此,你遇到各种明显和微妙的错误的可能性太大了!

但我不得不承认:我误解了这个问题。如果它完全关于处理这些断言,那么我同意Grasshoper对这个答案的评论;我没有看到工作的技术原因。

答案 3 :(得分:1)

您可以在测试中使用任何所需的断言库:TestNG,JUnit,AssertJ,Hamcrest,......

也可以使用TestNG运行JUnit测试,因为如果配置良好,TestNG支持JUnit。