为啥@Before 不被调用

Posted

技术标签:

【中文标题】为啥@Before 不被调用【英文标题】:Why isn't @Before being called为什么@Before 不被调用 【发布时间】:2014-09-13 08:46:20 【问题描述】:

在下面的测试类中,我的测试对象没有被初始化,因为之前没有被调用。

有什么想法吗?

import junit.framework.TestCase;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class CalcDateToolTest extends TestCase 

    DatesCalculator calc;

    @Before
    public void initialize() 
        System.out.println("Before");
        calc = new DatesCalculator("15/06/2013", "30/06/2013");
    

    @Test
    public void testCalcDayDiff() 
        assertEquals(true, calc.getFromDate());
    

    @After
    public void destroy() 
        calc = null;
    

【问题讨论】:

你为什么删除你的旧帖子?那时我对相关问题发表评论是对的......可能会有答案:***.com/a/733358/1993402。结论:do NOT extend TestCase AND use annotations at the same time! Why isn't my @BeforeClass method running?的可能重复 【参考方案1】:

从您的代码中删除 extends TestCase

例如:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class CalcDateToolTest 
    DatesCalculator calc;

    @Before
    public void initialize() 
        System.out.println("Before");
        calc = new DatesCalculator("15/06/2013", "30/06/2013");
    

    @Test
    public void testCalcDayDiff() 
        assertEquals(true, calc.getFromDate());
    

    @After
    public void destroy() 
        calc = null;
    

【讨论】:

以上是关于为啥@Before 不被调用的主要内容,如果未能解决你的问题,请参考以下文章

为啥传递的函数是不是带参数对 Mocha 的 `before()` 很重要?

为啥 :before 和 :after 伪元素需要 'content' 属性?

为啥在使用 unicode 时我不能在 :before :after 内容之后使用空格

为啥使用 :before 高度时,WebKit 上的对齐标记列表不同?

为啥将 * 选择器与 *::before 和 *::after 结合使用 [重复]

Before和After用法小结