Failed to load ApplicationContext przy próbie testowania bazy danych

0

Witam,
Chciałbym przetestować połączenie z bazą danych, jednak po odpaleniu testu dostaje błąd: IllegalState Failed to load ApplicationContext. Dla testów utworzyłem application.properties w src/test/resources o następującej zawartości:

0
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=sa

Mam interfejs rozszerzający Jparepository:

public interface BookRepository extends JpaRepository<Book, Long> {}

Klasę Book:

@Entity
@Table(name = "book")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(nullable = false)
    private String title;
    private String description;
    @Column(name = "release_date")
    @Temporal(TemporalType.TIMESTAMP)
    private Date releaseDate;
    
    // konstruktory, gettery i settery

I chciałbym to przetestować w następujący sposób:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Main.class)
public class ToDelete {
    @Autowired
    private BookRepository bookRepository;

    @Test
    public void testingDatabase(){
        Book book = bookRepository.save(new Book("Przemineło z wiatrem"));
        Book foundBook = bookRepository.findById(book.getId()).orElse(new Book());

        assertEquals(book.getId(), foundBook.getId());
    }
}

Jednak dostaje ww. błąd i nie wiem, czy muszę umieszczać tą konfigurację, ponieważ w poradniku z którego się uczę nie ma nic na ten temat.

0

Spróbuj użyć @Resource zamiast @Autowired

0

@Black007: Zmiana na @Resource nic nie dała.

0

Dodaj do testu adnotację:

@SpringApplicationConfiguration(classes = Main.class)

i zobacz teraz

0

Nie wiem dlaczego, ale nie mogę dodać tej adnotacji. IntelliJ nie znajduje mi pasującej zależności. Tak nawiasem to mam dodane:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>1.5.2.RELEASE</version>
</dependency> 
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.194</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>1.5.2.RELEASE</version>
</dependency>
0
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
0

Dalej bez zmian.

0

Spróbuj appliaction.properties wrzucić do src/main/java, a nie w src/test/java.
Następnie użyj

@SpringApplicationConfiguration(classes = Main.class)

razem z tą dependency:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

*Main.class to twoja główna klasa aplikacji SpringBoot

1 użytkowników online, w tym zalogowanych: 0, gości: 1