I have a very basic/default jpa repository that im trying to unit test
<code>package com.a.s.ai.troubleshooting.repository;
public interface TroubleshootingStatisticsRepository extends JpaRepository<TroubleshootingStatistics, Long> {
<code>package com.a.s.ai.troubleshooting.repository;
public interface TroubleshootingStatisticsRepository extends JpaRepository<TroubleshootingStatistics, Long> {
}
</code>
package com.a.s.ai.troubleshooting.repository;
public interface TroubleshootingStatisticsRepository extends JpaRepository<TroubleshootingStatistics, Long> {
}
My unit test structure is like so:
<code>public class TroubleshootingStatisticsRepositoryTest extends RepositoryTest {
private TroubleshootingStatisticsRepository troubleshootingStatisticsRepository;
* Test method for {@link TroubleshootingStatisticsRepository#save(TroubleshootingStatisticss)}.
* @throws Exception if any unexpected errors happen
public void add() throws Exception {
TroubleshootingStatistics troubleshootingStatistics = troubleshootingStatisticsRepository.save(createTroubleshootingStatistics());
assertNotNull(troubleshootingStatistics);
assertNotNull(troubleshootingStatisticsRepository.findById(troubleshootingStatistics.getId()).get());
<code>public class TroubleshootingStatisticsRepositoryTest extends RepositoryTest {
@Autowired
private TroubleshootingStatisticsRepository troubleshootingStatisticsRepository;
/**
* Test method for {@link TroubleshootingStatisticsRepository#save(TroubleshootingStatisticss)}.
*
* @throws Exception if any unexpected errors happen
*/
@Test
public void add() throws Exception {
TroubleshootingStatistics troubleshootingStatistics = troubleshootingStatisticsRepository.save(createTroubleshootingStatistics());
assertNotNull(troubleshootingStatistics);
assertNotNull(troubleshootingStatisticsRepository.findById(troubleshootingStatistics.getId()).get());
}
}
</code>
public class TroubleshootingStatisticsRepositoryTest extends RepositoryTest {
@Autowired
private TroubleshootingStatisticsRepository troubleshootingStatisticsRepository;
/**
* Test method for {@link TroubleshootingStatisticsRepository#save(TroubleshootingStatisticss)}.
*
* @throws Exception if any unexpected errors happen
*/
@Test
public void add() throws Exception {
TroubleshootingStatistics troubleshootingStatistics = troubleshootingStatisticsRepository.save(createTroubleshootingStatistics());
assertNotNull(troubleshootingStatistics);
assertNotNull(troubleshootingStatisticsRepository.findById(troubleshootingStatistics.getId()).get());
}
}
RepositoryTest has a few other things but all that should matter for context here is:
<code>@SpringBootTest(classes = TestApplication.class)
@ContextConfiguration(classes = TestApplication.class, initializers = { PostgresDataSourceInitializer.class })
public class RepositoryTest {
<code>@SpringBootTest(classes = TestApplication.class)
@ContextConfiguration(classes = TestApplication.class, initializers = { PostgresDataSourceInitializer.class })
@Testcontainers
public class RepositoryTest {
.....
</code>
@SpringBootTest(classes = TestApplication.class)
@ContextConfiguration(classes = TestApplication.class, initializers = { PostgresDataSourceInitializer.class })
@Testcontainers
public class RepositoryTest {
.....
TestApplication looks like this:
<code>@SpringBootApplication(scanBasePackages = "com.a.s.ai.troubleshooting")
@Import({ JpaTestConfiguration.class, ApplicationConfiguration.class })
public class TestApplication {
static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
<code>@SpringBootApplication(scanBasePackages = "com.a.s.ai.troubleshooting")
@Import({ JpaTestConfiguration.class, ApplicationConfiguration.class })
public class TestApplication {
static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
</code>
@SpringBootApplication(scanBasePackages = "com.a.s.ai.troubleshooting")
@Import({ JpaTestConfiguration.class, ApplicationConfiguration.class })
public class TestApplication {
static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
JpaTestConfiguration:
@EntityScan(basePackages = "com.a.s.ai.troubleshooting.entity")
public class JpaTestConfiguration {
<code>@Configuration
@EntityScan(basePackages = "com.a.s.ai.troubleshooting.entity")
public class JpaTestConfiguration {
}
</code>
@Configuration
@EntityScan(basePackages = "com.a.s.ai.troubleshooting.entity")
public class JpaTestConfiguration {
}
however when I go to run my test it complains about not being able to find the repository bean:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘com.a.s.ai.troubleshooting.repository.impl.TroubleshootingStatisticsRepositoryTest’: Unsatisfied dependency expressed through field ‘troubleshootingStatisticsRepository’: No qualifying bean of type ‘com.a.s.ai.troubleshooting.repository.TroubleshootingStatisticsRepository’ available: expected at least 1 bean which qualifies as autowire candidate