Reputation: 35
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);
}
}
Upvotes: 1
Views: 2124
Reputation: 663
If you execute the unit tests with the maven lifecycle test
the surefire plugin is used in the background. Depending on the version of the surefire plugin it supports different JUnit versions. Since surefire plugin version 3.0.0 JUnit 5 is supported out-of-the-box and no extra dependencies are necessary to execute JUnit 5 tests.
Prior version 3.0.0 it is necessary to add the junit-platform-runner and the @RunWith(JUnitPlatform.class)
so the JUnit 5 tests are executed with the right JUnit engine.
Upvotes: 1
Reputation: 12391
Your class doesn't have @RunWith(JUnitPlatform.class)
annotation. Add it and it will work fine.
Upvotes: 1