I'm trying to run a simple Junit test to see if my JpaRepository are indeed working.
The error I keep getting is:
Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test java.lang.IllegalStateException doesn't spring boot configure itself?
My Test Class :
@RunWith(SpringRunner.class)
@DataJpaTest
public class LogConnectionTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private LogConnectionDao logConnectionDao;
@Test
public void ajouterTest() throws Exception{
this.entityManager.persist(new LogConnection("Test",4));
LogConnection logConnection = this.logConnectionDao.findOne((long)1);
assertThat(logConnection.getClasseName().equals("Test"));
assertThat(logConnection.getOriginalId() != 5);
}
}
My Spring boot application :
@SpringBootApplication
public class UpsysmarocLibraryLogApplication {
public static void main(String[] args) {
SpringApplication.run(UpsysmarocLibraryLogApplication.class, args);
}
}
My Repository :
public interface LogConnectionDao extends JpaRepository<LogConnection,Long> {
}
I get it. Follow below convention
1> Assume your main spring application is as below
@EnableAutoConfiguration
@SpringBootApplication
public class Application {...}
2> Now create a abstract class which you can extend in all test classes. If you dont need this, then just take these config annotations and directly put in your test class.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
@ActiveProfiles("test")
@WebAppConfiguration
/**
* If you have any property file to load to test uncomment below line)
@TestPropertySource({
"classpath:/properties/dbConfig-test.properties",
"classpath:/properties/unittest.properties"
})
*/
public abstract class AbstractSpringTest{}
Then you can have your test class
public class LogConnectionTest extends AbstractSpringTest {
/** Instance to unit test. */
@Autowired
private LogConnectionDao logConnectionDao;
@Test
public void ajouterTest() {
final LogConnection logConnection = logConnectionDao.saveAndFlush(new LogConnection("Test",4));
Assert.assertNotNull(logConnection);
Assert.assertEquals("Test", logConnection.getClasseName());
Assert.assertNotEquals(5, logConnection.getOriginalId());
}
}
Use below class level annotation on your test class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {JPAConfig.class})
or
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {JPAConfig.class})
or
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value={"myJPAConfig.xml"})
or
@RunWith(SpringRunner.class)
@ContextConfiguration(value={"myJPAConfig.xml"})