代码之家  ›  专栏  ›  技术社区  ›  TraderJoeChicago

JUnit+Maven+Eclipse:BeforeClass为什么不起作用?

  •  8
  • TraderJoeChicago  · 技术社区  · 14 年前

    public abstract class BaseTestCase extends TestCase {
    
     @BeforeClass
        public static void doBeforeClass() throws Exception {
    
       System.out.println("No good @BeforeClass");
    
       // DO THE DATABASE SETUP
    
        }
    }
    

    现在测试扩展了BaseTestCase:

    public class LoginActionTest extends BaseTestCase {
    
     @Test
     public void testNothing() {
    
      System.out.println("TEST HERE");
    
      assertEquals(true, true);
     }
    }
    

    Maven和Eclipse忽略了我的@BeforeClass???测试前是否有其他方法进行设置?

    3 回复  |  直到 10 年前
        1
  •  14
  •   Georgy Bolyuba    14 年前

    Sergio,关于扩展TestCase导致问题的说法是对的。如果您扩展TestCase,JUnit会将您的测试类视为一个旧类(junit4之前的类)并选择 org.junit.internal.runners.JUnit38ClassRunner 运行它。JUnit38ClassRunner不知道 @BeforeClass runnerForClass AllDefaultPossibilitiesBuilder runnerForClass类 JUnit3Builder 更多细节。

    注意:这个问题与Eclipse或Maven无关。

        2
  •  1
  •   JesperE    14 年前

    请发布您的Eclipse启动配置。

        3
  •  1
  •   Viktor Stolbin    13 年前

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.8.1</version>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven.surefire</groupId>
                <artifactId>surefire-junit47</artifactId>
                <version>2.8.1</version>
            </dependency>
        </dependencies>
        <configuration>
            <parallel>methods</parallel>
            <threadCount>10</threadCount>
            <excludes>
                <exclude>**/*IntegrationTest.java</exclude>
            </excludes>
        </configuration>
    </plugin>
    

    更多信息请参见: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html

    mvn d公司ependency:tree . 我认为没有其他方法可以确保fire使用junit4。