junit 为什么我的@BeforeClass方法没有运行?

j2datikz  于 2023-04-21  发布在  其他
关注(0)|答案(7)|浏览(361)

我有以下代码:

@BeforeClass
    public static void setUpOnce() throws InterruptedException {
        fail("LOL");
    }

以及各种其他方法,例如@Before、@After、@Test或@AfterClass方法。
测试在启动时没有失败,因为它似乎应该。有人能帮助我吗?
JUnit 4.5
该方法在立即调用setUp()时失败,该方法被注解为@before。类def是:

public class myTests extends TestCase {
qhhrdooz

qhhrdooz1#

不要同时扩展TestCase和使用注解!
如果你需要创建一个带有注解的测试套件,使用RunWith注解,如下所示:

@RunWith(Suite.class)
@Suite.SuiteClasses({ MyTests.class, OtherTest.class })
public class AllTests {
    // empty
}

public class MyTests {  // no extends here
    @BeforeClass
    public static void setUpOnce() throws InterruptedException {
        ...
    @Test
    ...
  • (按惯例:类名称(大写字母)*
4szc88ey

4szc88ey2#

方法must be static和not直接调用失败(否则其他方法不会执行)。
下面的类显示了所有标准的JUnit 4方法类型:

public class Sample {

    @BeforeClass
    public static void beforeClass() {
        System.out.println("@BeforeClass");
    }

    @Before
    public void before() {
        System.out.println("@Before");
    }

    @Test
    public void test() {
        System.out.println("@Test");
    }

    @After
    public void after() {
        System.out.println("@After");
    }

    @AfterClass
    public static void afterClass() {
        System.out.println("@AfterClass");
    }

}

而输出是(不奇怪):

@BeforeClass
@Before
@Test
@After
@AfterClass
tyu7yeag

tyu7yeag3#

请确保从正确的包中导入了@Test。

  • 正确的 Package :org.junit.Test
  • Package 不正确:org.junit.jupiter.api.Test

请注意,这是一个解决方案:如果您的@Before、@Atter等根本没有被调用。

ybzsozfc

ybzsozfc4#

确保:

  • 您的测试类没有从TestCase继承
  • @BeforeClass方法是静态的
  • 在测试类层次结构中没有多个@BeforeClass方法(只执行最专用的@BeforeClass方法)
92dk7w1h

92dk7w1h5#

检查您的导入。

  • @之前
  • @之后
  • @BeforeClass(这应该是静态的)
  • @AfterClass(这应该是静态的)

和@Test注解应从同一路径导入。

ndasle7k

ndasle7k6#

为了运行before注解的函数,我必须执行以下操作:如果你使用Maven,在Junit 4.11+中添加一个依赖项:

<properties>
              <version.java>1.7</version.java>
              <version.log4j>1.2.13</version.log4j>
              <version.mockito>1.9.0</version.mockito>
              <version.power-mockito>1.4.12</version.power-mockito>
               <version.junit>4.11</version.junit>   
              <version.power-mockito>1.4.12</version.power-mockito>
      </properties>

以及依赖性:

<dependencies>
        <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${version.junit}</version>
         <scope>test</scope>
       </dependency>    
        .
        .
        .
      </dependencies>

请确保您的Junit Test类没有扩展The TestCase类,因为这将导致与旧版本重叠:

public class TuxedoExceptionMapperTest{
   protected TuxedoExceptionMapper subject;

   @Before
   public void before() throws Exception {
     subject = TuxedoExceptionMapper.getInstance();
      System.out.println("Start");
      MockitoAnnotations.initMocks(this);
   }
}
42fyovps

42fyovps7#

检查事项:

  • Junit包是:org.junit.Test
  • 你没有一个静态块。(我是通过艰苦的方式学会的)

相关问题