zapodot/embedded-db-junit

@EmbeddedDatabase does not work during maven build

MarkRKar opened this issue · 2 comments

TestIssue.java

package test;

import static org.junit.jupiter.api.Assertions.assertTrue;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.zapodot.junit.db.EmbeddedDatabaseExtension;
import org.zapodot.junit.db.annotations.EmbeddedDatabase;
import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest;
import org.zapodot.junit.db.common.CompatibilityMode;
import org.zapodot.junit.db.common.Engine;

@EmbeddedDatabaseTest(
    engine = Engine.H2,
    compatibilityMode = CompatibilityMode.MySQL,
    initialSqls = "CREATE TABLE Customer(id INTEGER PRIMARY KEY, name VARCHAR(512)); "
        + "INSERT INTO CUSTOMER(id, name) VALUES (1, 'John Doe')"
)
@ExtendWith(EmbeddedDatabaseExtension.class)
public class TestIssue {

    @EmbeddedDatabase
    public Connection connection;

    @Test
    public void testUsingConnection() throws SQLException {
        try (final Statement statement = connection.createStatement();
            final ResultSet resultSet = statement.executeQuery("SELECT * from CUSTOMER")) {
            assertTrue(resultSet.next());
        }
    }
}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1</version>
  <packaging>jar</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>5.6.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.zapodot</groupId>
      <artifactId>embedded-db-junit-jupiter</artifactId>
      <version>2.0.0</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>io.symphonia</groupId>
      <artifactId>lambda-logging</artifactId>
      <version>1.0.3</version>
    </dependency>
  </dependencies>
</project>

... clean verify
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------------< test:test >------------------------------
[INFO] Building test 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ test ---
[INFO] Deleting C:\WS\Test\target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ test ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\WS\Test\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ test ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ test ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\WS\Test\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ test ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\WS\Test\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ test ---
[INFO] Surefire report directory: C:\WS\Test\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running test.TestIssue
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec <<< FAILURE!
test.TestIssue.testUsingConnection()  Time elapsed: 0.006 sec  <<< FAILURE!
java.lang.NullPointerException
	at test.TestIssue.testUsingConnection(TestIssue.java:31)


Results :

Failed tests:   test.TestIssue.testUsingConnection()

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.217 s
[INFO] Finished at: 2020-04-19T18:28:29+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project test: There are test failures.
[ERROR] 
[ERROR] Please refer to C:\WS\Test\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

I can execute it successfull with IntelliJ Ide but if I run it with maven (clean verify) the connection is null.
I tried also without @ExtendWith but same result
When I give #testUsingConnection the Connection as Parameter maven does not execute the test.

Thank you for reporting this @MarkRKar!
Seems weird, but I will try to recreate and see what happens

Closing this as I was not able to reproduce. Can yoy retest with the latest version @MarkRKar ?