使用ANT以特定顺序运行JUNIT测试套件
在下面的示例中使用ANT以特定顺序运行JUNIT测试套件,ant,junit,Ant,Junit,在下面的示例中 1. <target name="tests.unit"> 2. <junit> 3. <batchtest> 4. <fileset dir="tsrc"> 5. <include name="**/Test*.java"/> 6. <exclude name="**/tests
1. <target name="tests.unit">
2. <junit>
3. <batchtest>
4. <fileset dir="tsrc">
5. <include name="**/Test*.java"/>
6. <exclude name="**/tests/*.java"/>
7. </fileset>
8. </batchtest>
9. </junit>
10. </target>
11. <target name="tests.integration">
12. <junit>
13. <batchtest>
14. <fileset dir="tsrc">
15. <include name="**/tests/Test*.java"/>
16. </fileset>
17. </batchtest>
18. </junit>
19. </target>
1。
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
17
18
19
如果**/tests/文件夹中有多个测试套件。如果我运行tests.integration目标,它如何知道首先运行哪个测试套件?如果我有TestSuite1.java、TestSuite2.java和TestSuite3.java,我希望测试套件按照文件名中指定的顺序运行 除非JUnit中有新功能,否则这是一件很难做到的事情 TestNG可以使用依赖组管理它 这里有个问题要问你:为什么顺序很重要?单元测试不应该有依赖项。如果您这样做,可能这些就是真正的集成测试
FitNesse可能是一个更好的方法。是的,我正在尝试为功能测试而不是单元测试创建一个测试套件。我正在尝试使用junit构建功能测试包。我正在使用基于Junit的selenium 假设我有一个网站,你不登录就什么都做不了。在本例中,我有一个测试登录功能的测试用例,然后我会有另一个测试用例来测试其他东西。他们将被执行的顺序很重要,因为我不能在登录之前测试任何东西,这意味着该顺序应该被执行
<target=TestReadProduct depends=TestLogin, TestCreateProduct>
难道没有更好的办法吗 您可以创建一个基本测试类,将登录名放在它的
setUp()
中,并从这个类继承所有测试用例(当然,还可以到处调用super.setUp()
)
请注意,这只是一个简单的登录,不是一个正确的单元测试。您应该在一个单独的测试类中使用所有可能的疯狂用户输入之类的内容对登录功能进行单元测试,但是对于其余的测试用例,您只需要一个带有默认用户名或其他内容的简单登录
对于那些在登录上还需要产品的测试用例,您可以创建第二个基本测试类,该类扩展第一个基本测试类,并将产品创建添加到其设置()
无代码重复-如果登录发生更改,除了登录测试用例本身之外,您还需要更改测试代码中的单个方法
以这种方式执行5000个单元测试可能会慢一些,但要安全得多。如果您开始依赖于单元测试的执行顺序,那么您正在走下坡路。很难注意到,如果两个单元测试的顺序是由您的配置固定的,那么您无意中在它们之间引入了一个额外的依赖关系。例如,您在一个单元测试中设置了产品的特定属性或更改了全局配置设置,然后在下一个测试用例中在您的产品上测试了其他内容,而这恰好起作用,因为上一个单元测试是以这种特定方式设置的。这迟早会导致令人不快的惊喜