Skip to content

Commit b6d47b0

Browse files
lor6Eugen
authored andcommitted
junit 5 example (eugenp#2050)
1 parent 080a423 commit b6d47b0

File tree

12 files changed

+582
-0
lines changed

12 files changed

+582
-0
lines changed

guest/junit5-example/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/target/
2+
.settings/
3+
.classpath
4+
.project

guest/junit5-example/pom.xml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>junit5-example</groupId>
5+
<artifactId>junit5-example</artifactId>
6+
<version>0.0.1-SNAPSHOT</version>
7+
8+
<dependencies>
9+
<dependency>
10+
<groupId>org.junit.jupiter</groupId>
11+
<artifactId>junit-jupiter-engine</artifactId>
12+
<version>5.0.0-M4</version>
13+
</dependency>
14+
<dependency>
15+
<groupId>org.junit.jupiter</groupId>
16+
<artifactId>junit-jupiter-params</artifactId>
17+
<version>5.0.0-M4</version>
18+
</dependency>
19+
20+
<dependency>
21+
<groupId>org.junit.vintage</groupId>
22+
<artifactId>junit-vintage-engine</artifactId>
23+
<version>4.12.0-M4</version>
24+
</dependency>
25+
26+
<dependency>
27+
<groupId>com.h2database</groupId>
28+
<artifactId>h2</artifactId>
29+
<version>1.4.195</version>
30+
</dependency>
31+
32+
<dependency>
33+
<groupId>org.apache.logging.log4j</groupId>
34+
<artifactId>log4j-core</artifactId>
35+
<version>2.8.2</version>
36+
</dependency>
37+
38+
</dependencies>
39+
40+
<build>
41+
<plugins>
42+
<plugin>
43+
<artifactId>maven-compiler-plugin</artifactId>
44+
<version>3.5</version>
45+
<configuration>
46+
<source>1.8</source>
47+
<target>1.8</target>
48+
</configuration>
49+
</plugin>
50+
<plugin>
51+
<artifactId>maven-surefire-plugin</artifactId>
52+
<version>2.19.1</version>
53+
<dependencies>
54+
<dependency>
55+
<groupId>org.junit.platform</groupId>
56+
<artifactId>junit-platform-surefire-provider</artifactId>
57+
<version>1.0.0-M4</version>
58+
</dependency>
59+
</dependencies>
60+
<configuration>
61+
<properties>
62+
<excludeTags>math</excludeTags>
63+
</properties>
64+
</configuration>
65+
</plugin>
66+
</plugins>
67+
</build>
68+
</project>
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
package com.stackify.daos;
2+
3+
import java.sql.Connection;
4+
import java.sql.PreparedStatement;
5+
import java.sql.ResultSet;
6+
import java.sql.SQLException;
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
import org.apache.logging.log4j.LogManager;
11+
import org.apache.logging.log4j.Logger;
12+
13+
import com.stackify.models.User;
14+
import com.stackify.utils.ConnectionUtil;
15+
16+
public class UserDAO {
17+
18+
private Logger logger = LogManager.getLogger(UserDAO.class);
19+
20+
public void createTable() {
21+
try (Connection con = ConnectionUtil.getConnection()) {
22+
String createQuery = "CREATE TABLE users(email varchar(50) primary key, name varchar(50))";
23+
PreparedStatement pstmt = con.prepareStatement(createQuery);
24+
25+
pstmt.execute();
26+
} catch (SQLException exc) {
27+
logger.error(exc.getMessage());
28+
}
29+
30+
}
31+
32+
public void add(User user) {
33+
try (Connection con = ConnectionUtil.getConnection()) {
34+
35+
String insertQuery = "INSERT INTO users(email,name) VALUES(?,?)";
36+
PreparedStatement pstmt = con.prepareStatement(insertQuery);
37+
pstmt.setString(1, user.getEmail());
38+
pstmt.setString(2, user.getName());
39+
40+
pstmt.executeUpdate();
41+
} catch (SQLException exc) {
42+
logger.error(exc.getMessage());
43+
}
44+
}
45+
46+
public void update(User user) {
47+
try (Connection con = ConnectionUtil.getConnection()) {
48+
49+
String updateQuery = "UPDATE users SET name=? WHERE email=?";
50+
PreparedStatement pstmt = con.prepareStatement(updateQuery);
51+
pstmt.setString(1, user.getName());
52+
pstmt.setString(2, user.getEmail());
53+
54+
pstmt.executeUpdate();
55+
} catch (SQLException exc) {
56+
logger.error(exc.getMessage());
57+
}
58+
}
59+
60+
public void delete(User user) {
61+
try (Connection con = ConnectionUtil.getConnection()) {
62+
63+
String deleteQuery = "DELETE FROM users WHERE email=?";
64+
PreparedStatement pstmt = con.prepareStatement(deleteQuery);
65+
pstmt.setString(1, user.getEmail());
66+
67+
pstmt.executeUpdate();
68+
} catch (SQLException exc) {
69+
logger.error(exc.getMessage());
70+
}
71+
}
72+
73+
public void delete(String email) {
74+
try (Connection con = ConnectionUtil.getConnection()) {
75+
76+
String deleteQuery = "DELETE FROM users WHERE email=?";
77+
PreparedStatement pstmt = con.prepareStatement(deleteQuery);
78+
pstmt.setString(1, email);
79+
80+
pstmt.executeUpdate();
81+
} catch (SQLException exc) {
82+
logger.error(exc.getMessage());
83+
}
84+
}
85+
86+
public User findOne(String email) {
87+
User user = null;
88+
89+
try (Connection con = ConnectionUtil.getConnection()) {
90+
String query = "SELECT * FROM users WHERE email=?";
91+
PreparedStatement pstmt = con.prepareStatement(query);
92+
pstmt.setString(1, email);
93+
94+
ResultSet rs = pstmt.executeQuery();
95+
while (rs.next()) {
96+
user = new User();
97+
user.setEmail(rs.getString("email"));
98+
user.setName(rs.getString("name"));
99+
}
100+
101+
} catch (SQLException exc) {
102+
logger.error(exc.getMessage());
103+
}
104+
105+
return user;
106+
}
107+
108+
public List<User> findAll() {
109+
List<User> users = new ArrayList<>();
110+
111+
try (Connection con = ConnectionUtil.getConnection()) {
112+
String query = "SELECT * FROM users";
113+
PreparedStatement pstmt = con.prepareStatement(query);
114+
115+
ResultSet rs = pstmt.executeQuery();
116+
while (rs.next()) {
117+
User user = new User();
118+
user.setEmail(rs.getString("email"));
119+
user.setName(rs.getString("name"));
120+
users.add(user);
121+
}
122+
} catch (SQLException exc) {
123+
logger.error(exc.getMessage());
124+
}
125+
126+
return users;
127+
}
128+
129+
public void deleteAll() {
130+
try (Connection con = ConnectionUtil.getConnection()) {
131+
132+
String deleteQuery = "DELETE FROM users";
133+
PreparedStatement pstmt = con.prepareStatement(deleteQuery);
134+
135+
pstmt.executeUpdate();
136+
} catch (SQLException exc) {
137+
logger.error(exc.getMessage());
138+
}
139+
}
140+
141+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.stackify.models;
2+
3+
public class User {
4+
private String email;
5+
private String name;
6+
7+
public User() {
8+
}
9+
10+
public User(String email, String name) {
11+
super();
12+
this.email = email;
13+
this.name = name;
14+
}
15+
16+
public String getEmail() {
17+
return email;
18+
}
19+
20+
public void setEmail(String email) {
21+
this.email = email;
22+
}
23+
24+
public String getName() {
25+
return name;
26+
}
27+
28+
public void setName(String name) {
29+
this.name = name;
30+
}
31+
32+
@Override
33+
public int hashCode() {
34+
final int prime = 31;
35+
int result = 1;
36+
result = prime * result + ((email == null) ? 0 : email.hashCode());
37+
result = prime * result + ((name == null) ? 0 : name.hashCode());
38+
return result;
39+
}
40+
41+
@Override
42+
public boolean equals(Object obj) {
43+
if (this == obj)
44+
return true;
45+
if (obj == null)
46+
return false;
47+
if (getClass() != obj.getClass())
48+
return false;
49+
User other = (User) obj;
50+
if (email == null) {
51+
if (other.email != null)
52+
return false;
53+
} else if (!email.equals(other.email))
54+
return false;
55+
if (name == null) {
56+
if (other.name != null)
57+
return false;
58+
} else if (!name.equals(other.name))
59+
return false;
60+
return true;
61+
}
62+
63+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.stackify.utils;
2+
3+
import java.io.FileNotFoundException;
4+
import java.io.IOException;
5+
import java.sql.Connection;
6+
import java.sql.DriverManager;
7+
import java.sql.SQLException;
8+
import java.util.Properties;
9+
10+
import org.apache.logging.log4j.LogManager;
11+
import org.apache.logging.log4j.Logger;
12+
13+
public class ConnectionUtil {
14+
15+
private static Logger logger = LogManager.getLogger(ConnectionUtil.class);
16+
17+
public static Connection getConnection() {
18+
try {
19+
Properties props = new Properties();
20+
props.load(ConnectionUtil.class.getResourceAsStream("jdbc.properties"));
21+
Class.forName(props.getProperty("jdbc.driver"));
22+
Connection con = DriverManager.getConnection(props.getProperty("jdbc.url"), props.getProperty("jdbc.user"), props.getProperty("jdbc.password"));
23+
return con;
24+
}
25+
26+
catch (FileNotFoundException exc) {
27+
logger.error(exc.getMessage());
28+
} catch (IOException exc) {
29+
logger.error(exc.getMessage());
30+
} catch (ClassNotFoundException exc) {
31+
logger.error(exc.getMessage());
32+
} catch (SQLException exc) {
33+
logger.error(exc.getMessage());
34+
}
35+
return null;
36+
}
37+
38+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
jdbc.driver=org.h2.Driver
2+
jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
3+
jdbc.user=
4+
jdbc.password=
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Configuration status="WARN">
3+
<Appenders>
4+
<Console name="Console" target="SYSTEM_OUT">
5+
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
6+
</Console>
7+
</Appenders>
8+
<Loggers>
9+
<Root level="info">
10+
<AppenderRef ref="Console"/>
11+
</Root>
12+
</Loggers>
13+
</Configuration>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.stackify.test;
2+
3+
import java.sql.Connection;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
import com.stackify.utils.ConnectionUtil;
8+
9+
import static org.junit.jupiter.api.Assertions.*;
10+
11+
public interface DatabaseConnectionTest {
12+
13+
@Test
14+
default void testDatabaseConnection() {
15+
Connection con = ConnectionUtil.getConnection();
16+
assertNotNull(con);
17+
}
18+
19+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.stackify.test;
2+
3+
import java.util.Arrays;
4+
import java.util.Collection;
5+
import java.util.List;
6+
import java.util.function.Function;
7+
import java.util.stream.Stream;
8+
9+
import static org.junit.jupiter.api.Assertions.*;
10+
import org.junit.jupiter.api.DynamicTest;
11+
import org.junit.jupiter.api.TestFactory;
12+
import org.junit.jupiter.api.function.ThrowingConsumer;
13+
14+
import com.stackify.daos.UserDAO;
15+
import com.stackify.models.User;
16+
17+
public class DynamicTests {
18+
19+
@TestFactory
20+
public Collection<DynamicTest> dynamicTestCollection() {
21+
return Arrays.asList(DynamicTest.dynamicTest("Dynamic Test", () -> assertTrue(1 == 1)));
22+
}
23+
24+
@TestFactory
25+
public Stream<DynamicTest> dynamicUserTestCollection() {
26+
List<User> inputList = Arrays.asList(new User("[email protected]", "John"), new User("[email protected]", "Ana"));
27+
28+
Function<User, String> displayNameGenerator = (input) -> "Saving user: " + input;
29+
30+
UserDAO userDAO = new UserDAO();
31+
ThrowingConsumer<User> testExecutor = (input) -> {
32+
userDAO.add(input);
33+
assertNotNull(userDAO.findOne(input.getEmail()));
34+
};
35+
36+
return DynamicTest.stream(inputList.iterator(), displayNameGenerator, testExecutor);
37+
}
38+
}

0 commit comments

Comments
 (0)