您可以在同一个测试/框架中将TestNG和JUnit断言混合在一起吗?
例如,假设我已经开发了一个框架,是否可以拥有以下内容:
感谢您的帮助
答案 0 :(得分:1)
我认为简短的回答是否定的。如果您注意到使用@Test注释将方法标记为测试时,系统会提示您导入哪个框架。断言也是如此。想想看,如果提示使用Junit断言,Testng测试将无法“记录”结果。因此,在使用Testng @Test注释编写测试时; Assertion自动默认为Testng断言。
在OP的评论之后更新:
Gbru检查你的\ projectFolder \ test-output \ junitreports 您正在寻找的xml可能已经存在..
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。