Search code examples
spring-bootmockitojunit4

Writing Junit test case of DataSource


I want to use mock it to mock data source object in the below code but every time I am getting null pointer exception.

@Component
@Transactional
public class ConnectionUtils {

@Autowired
private Datasource data source

public Connection getConnection()
{
     return this.datasource.getConnection();
}

I have tried mocking Datasource as well as connection but nothing seems to work.


Solution

  • This isn't a particularly interesting test, but I hope you can build on it. It is not best practice to mock Connection but I don't know of any easy implementors of it. This might be better done using @DataJpaTest, an example is here.

    @RunWith(MockitoJUnitRunner.class)
    public class ConnectionUtilsTest {
    
        @InjectMocks
        ConnectionUtils connectionUtils;
    
        @Mock
        Datasource datasource;
    
        @Mock
        Connection connection;
    
        @Test
        public void shouldReturnDatasourceConnection() {
            when(datasource.getConnection()).thenReturn(connection);
    
            Connection actual = connectionUtils.getConnection();
    
            assertSame(connection, actual);
        }
    }