Junit5和Maven:@BeforeAll初始化方法未被调用

huangapple go评论88阅读模式
英文:

Junit5 and Maven: @BeforeAll initialization method not being called

问题

我会感激任何关于为什么以下 Junit5 测试套件中的 `@BeforeAll` 被跳过的提示供您参考我使用 Maven 构建时的输出

14:43:53.681 [main] DEBUG org.benthumb.db2_web_app.tests.CustomerDaoTest - 创建测试对象...
运行中org.benthumb.db2_web_app.tests.CustomerDaoTest

14:43:53.689 [main] DEBUG org.benthumb.db2_web_app.tests.CustomerDaoTest - 执行测试一...

14:43:53.696 [main] DEBUG org.benthumb.db2_web_app.tests.CustomerDaoTest - 客户访问对象为空...
共运行 2 个测试失败 0 个错误 0 个跳过 0 个耗时 0.005
public class CustomerDaoTest {
    
    private static CustomerDao cDao;
    private static Customer cust;
    private static Properties props;
    private final static String PROP_FILE_NAME = "customer.properties";
    private static InputStream is;
    final static Logger logger = LoggerFactory.getLogger(CustomerDaoTest.class);
    
    public CustomerDaoTest() {
        logger.debug("创建测试对象...");
        is = getClass().getClassLoader().getResourceAsStream(PROP_FILE_NAME);
    }
    
    @BeforeAll
    public static void initializeTestConditions() throws IOException {
        logger.debug("设置客户访问对象...");
        props = new Properties();
        if (is != null) {
            props.load(is);
        } else {
            throw new FileNotFoundException("在类路径中找不到属性文件'" + PROP_FILE_NAME + "'");
        }
        
        cust = new Customer(
                props.getProperty("id"),
                props.getProperty("businessName"),
                props.getProperty("jobTitle"),
                props.getProperty("firstName"),
                props.getProperty("address"),
                props.getProperty("address2"),
                "",
                props.getProperty("city"),
                props.getProperty("state"),
                props.getProperty("country"),
                props.getProperty("phone")
        );
        cDao = new CustomerDao();
        //conn = cDao.conn;
    }
    
    @Test
    public void testConnectionCustomerDao() throws SQLException {
        //Properties prop = conn.getClientInfo();
        //assertEquals("这两个值相等", prop, null);
        logger.debug("执行测试一...");
        Assumptions.assumeTrue(1 == 1);
    }
    
    @Test
    public void testPersistCustomerDao() {
        if (cDao != null) {
            try {
                cDao.addCustomer(cust);
            } catch (SQLException ex) {
                logger.error(Marker.ANY_MARKER, null, ex.getErrorCode());
            }
        } else {
            logger.debug("客户访问对象为空...");
        }
        Assumptions.assumeTrue(1 == 1);
    }
    
}
英文:

I would appreciate any hints as to why @BeforeAll is skipped in the following Junit5 test suite. FYI, my output when I build with Maven:

-------------------------------------------------------
T E S T S
-------------------------------------------------------
14:43:53.681 [main] DEBUG org.benthumb.db2_web_app.tests.CustomerDaoTest - creating test object...
Running org.benthumb.db2_web_app.tests.CustomerDaoTest
14:43:53.689 [main] DEBUG org.benthumb.db2_web_app.tests.CustomerDaoTest - test one executing...
14:43:53.696 [main] DEBUG org.benthumb.db2_web_app.tests.CustomerDaoTest - customer access object is null...
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
public class CustomerDaoTest {
    
    private static CustomerDao cDao;
    private static Customer cust;
    private static Properties props;
    private final static String PROP_FILE_NAME = "customer.properties";
    private static InputStream is;
    final static Logger logger = LoggerFactory.getLogger(CustomerDaoTest.class);
    
    public CustomerDaoTest() {
        logger.debug("creating test object...");
        is = getClass().getClassLoader().getResourceAsStream(PROP_FILE_NAME);
    }
    
    @BeforeAll
    public static void initializeTestConditions() throws IOException {
        logger.debug("setting up customer access object...");
        props = new Properties();
        if (is != null) {
            props.load(is);
        } else {
            throw new FileNotFoundException("property file '" + PROP_FILE_NAME + "' not found in the classpath");
        }
        
        cust = new Customer(
                props.getProperty("id"),
                props.getProperty("businessName"),
                props.getProperty("jobTitle"),
                props.getProperty("firstName"),
                props.getProperty("address"),
                props.getProperty("address2"),
                "",
                props.getProperty("city"),
                props.getProperty("state"),
                props.getProperty("country"),
                props.getProperty("phone")
        );
        cDao = new CustomerDao();
        //conn = cDao.conn;
    }
    
    @Test
    public void testConnectionCustomerDao() throws SQLException {
        //Properties prop = conn.getClientInfo();
        //assertEquals("these two values are equal", prop, null);
        logger.debug("test one executing...");
        Assumptions.assumeTrue(1 == 1);
    }
    
    @Test
    public void testPersistCustomerDao() {
        if (cDao != null) {
            try {
                cDao.addCustomer(cust);
            } catch (SQLException ex) {
                logger.error(Marker.ANY_MARKER, null, ex.getErrorCode());
            }
        } else {
            logger.debug("customer access object is null...");
        }
        Assumptions.assumeTrue(1 == 1);
    }
    
}

答案1

得分: 0

你的类没有 @RunWith(JUnitPlatform.class) 注解。添加它就可以正常运行了。

英文:

Your class doesn't have @RunWith(JUnitPlatform.class) annotation. Add it and it will work fine.

huangapple
  • 本文由 发表于 2020年4月5日 14:51:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/61039023.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定