使用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

假设我有一个网站,你不登录就什么都做不了。在本例中,我有一个测试登录功能的测试用例,然后我会有另一个测试用例来测试其他东西。他们将被执行的顺序很重要,因为我不能在登录之前测试任何东西,这意味着该顺序应该被执行

  • 测试登录
  • TestCreateProduct
  • TestReadProduct
  • 在上面的测试用例中,我无法在创建任何产品之前阅读它,并且我已经登录,并且我无法在登录之前创建产品。我已经看到很多关于使用setUp()和tearDown()方法的评论,但这肯定意味着大量重复

    例如,如果我必须使TestReadProduct测试用例独立,那么我必须将TestLogin和TestCreateproduct功能放在TestCreateproduct测试用例的setUp()方法中。这无疑是一场维护噩梦。想象一下必须维护5000个测试用例。如果TestLogin功能发生变化,我将不得不在很多地方进行大量更改

    我正在考虑在ANT中使用“depends”选项

    像这样的

    <target=TestReadProduct depends=TestLogin, TestCreateProduct>
    
    
    

    难道没有更好的办法吗

    您可以创建一个基本测试类,将登录名放在它的
    setUp()
    中,并从这个类继承所有测试用例(当然,还可以到处调用
    super.setUp()

    请注意,这只是一个简单的登录,不是一个正确的单元测试。您应该在一个单独的测试类中使用所有可能的疯狂用户输入之类的内容对登录功能进行单元测试,但是对于其余的测试用例,您只需要一个带有默认用户名或其他内容的简单登录

    对于那些在登录上还需要产品的测试用例,您可以创建第二个基本测试类,该类扩展第一个基本测试类,并将产品创建添加到其
    设置()

    无代码重复-如果登录发生更改,除了登录测试用例本身之外,您还需要更改测试代码中的单个方法

    以这种方式执行5000个单元测试可能会慢一些,但要安全得多。如果您开始依赖于单元测试的执行顺序,那么您正在走下坡路。很难注意到,如果两个单元测试的顺序是由您的配置固定的,那么您无意中在它们之间引入了一个额外的依赖关系。例如,您在一个单元测试中设置了产品的特定属性或更改了全局配置设置,然后在下一个测试用例中在您的产品上测试了其他内容,而这恰好起作用,因为上一个单元测试是以这种特定方式设置的。这迟早会导致令人不快的惊喜