Uygulamamı sınamak için JUnit kullanıyorum ve veritabanı sınama işleminden önce başlatıldığı sürece her şey iyi çalışıyor (web uygulaması olarak gradle bootRun
kullanıyor). Ancak, veritabanı boşsa, uygulama, sınamadan önce herhangi bir modeli veya varlığı başlatacak gibi görünmüyor. Bunu yapmamın bir yolu var mı? Testten önce ApplicationRunner
sınıfının çalıştırılacağı ve varlıkları inisiye edeceği varsayımı yaptım. Bunu yapmanın bir yolu var mı yoksa yanlış yaklaşımı mı kullanıyorum? Bir DriverManagerDataSource
bağlantısı kullanarak /src/main/java/application/persistence/DbConfig.java
yılındaBahar Önyükleme sınamasından önce bir veritabanı başlatılıyor
server.port=8090
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=123456
server.ssl.key-password 123456
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.naming-strategy:org.hibernate.cfg.ImprovedNamingStrategy
application.logger.org.springframework=INFO
Benim veritabanı depolanır:
Bu benim application.properties
dosya gibi bakıyor nasıl. Ve başlangıçta db'ye birkaç satır eklemeye çalışmak için ApplicationRunner
kurulumunu yapıyorum.
düzenleme: Ben de bu ben JUnit test dosyası üzerinde kullanıyorum ek açıklamalar olduğunu eklemek gerekir
:
sizden bunu açık şekilde yürütmek istemiyorsanız@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes={
AdeyTrackApplication.class,
SecurityConfig.class,
WebConfig.class,
AuthorizationController.class
})
Test yönteminizdeki "setUp" yönteminde veritabanının ilk yolu veritabanını başlatır. Başka bir yöntem de, veritabanında veriyi ilklendiren ve bu sınıfı 'ContextConfiguration' öğesine ekleyen' @ PostConstruct' fonksiyonunu eklediğiniz yerde test yapılandırması oluşturmaktır. – krynio
@krynio bunun bir uygulaması için bir örnek var mı? Spring ile çok deneyimli değilim ve JUnit ile ilgili olarak bu açıklamaya rastlamadım. – px06
En basit yol, JdbcTemplate'i test sınıfınıza enjekte eder. Ardından 'jdbcTemplate.execue (sql)' kullanarak sql sorgusunu yürütebilirsiniz. Her bir testten önce bu kodu çalıştırmak için '@ Before' ek açıklama ile 'setUp' yöntemini oluşturmalısınız. İşte JdbcTemplate enjekte ve sorgu yürütmek için örnek: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-flyway/src/test/java /sample/flyway/SampleFlywayApplicationTests.java ve burada '@ Before' http: // junit kullanma örneği.sourceforge.net/javadoc/org/junit/Before.html – krynio