Spring Data Neo4Jの記事を追加
github pages / deploy (push) Successful in 3m14s
Details
github pages / deploy (push) Successful in 3m14s
Details
This commit is contained in:
parent
0357aed2b0
commit
6833b2b0c5
|
@ -0,0 +1,129 @@
|
|||
---
|
||||
author: usbharu
|
||||
draft: false
|
||||
categories:
|
||||
- 技術
|
||||
date: 2025-05-15T00:48:13+09:00
|
||||
tags:
|
||||
- SpringBoot
|
||||
- Spring Data
|
||||
- Spring Data Neo4j
|
||||
- Kotlin
|
||||
- Neo4j
|
||||
- JUnit5
|
||||
keywords:
|
||||
- SpringBoot
|
||||
- Spring Data
|
||||
- Spring Data Neo4j
|
||||
- Kotlin
|
||||
- Neo4j
|
||||
- JUnit5
|
||||
title: Spring Data Neo4jでテストする
|
||||
relpermalink: posts/2025-05-15/
|
||||
url: posts/2025-05-15/
|
||||
decription: Spring Data Neo4jでテストする
|
||||
---
|
||||
|
||||
|
||||
ほぼメモ
|
||||
|
||||
## 依存関係
|
||||
|
||||
```kotlin
|
||||
configurations {
|
||||
compileOnly {
|
||||
extendsFrom(configurations.annotationProcessor.get())
|
||||
}
|
||||
all{
|
||||
exclude(group = "org.slf4j",module ="slf4j-nop")
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
||||
implementation("org.springframework.boot:spring-boot-starter-data-neo4j")
|
||||
implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server")
|
||||
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||
runtimeOnly("io.micrometer:micrometer-registry-prometheus")
|
||||
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||
testImplementation("org.springframework.security:spring-security-test")
|
||||
testImplementation("org.neo4j.test:neo4j-harness:2025.04.0"){
|
||||
exclude(group = "org.neo4j",module="neo4j-slf4j-provider")
|
||||
}
|
||||
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
|
||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||
implementation("org.slf4j:slf4j-api:2.0.16")
|
||||
runtimeOnly("ch.qos.logback:logback-classic:1.5.16")
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
## 結合テスト
|
||||
|
||||
```kotlin
|
||||
@SpringBootTest
|
||||
@AutoConfigureMockMvc
|
||||
@AutoConfigureDataNeo4j
|
||||
class TagControllerTest {
|
||||
|
||||
|
||||
@Autowired
|
||||
private lateinit var mockMvc: MockMvc
|
||||
|
||||
@Test
|
||||
fun tagの作成() {
|
||||
mockMvc
|
||||
.post("/tags") {
|
||||
with(csrf())
|
||||
contentType = MediaType.APPLICATION_JSON
|
||||
//language=json
|
||||
content = """[
|
||||
{
|
||||
"id": "test-id",
|
||||
"name": "test-name",
|
||||
"locale": "ja-JP",
|
||||
"parent": "test-parent",
|
||||
"relations": {}
|
||||
}]
|
||||
""".trimIndent()
|
||||
}
|
||||
.andDo { print() }
|
||||
.andExpect {
|
||||
status { is2xxSuccessful() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
companion object {
|
||||
private lateinit var embeddedDatabaseServer: Neo4j
|
||||
|
||||
@BeforeAll
|
||||
@JvmStatic
|
||||
fun initializeNeo4j() {
|
||||
embeddedDatabaseServer = Neo4jBuilders.newInProcessBuilder()
|
||||
.withDisabledServer()
|
||||
.build()
|
||||
}
|
||||
|
||||
@DynamicPropertySource
|
||||
@JvmStatic
|
||||
fun neo4jProperties(registry: DynamicPropertyRegistry) {
|
||||
registry.add("spring.neo4j.uri", Supplier { embeddedDatabaseServer.boltURI() })
|
||||
registry.add("spring.neo4j.authentication.username", Supplier { "neo4j" })
|
||||
registry.add("spring.neo4j.authentication.password", Supplier { null })
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
@JvmStatic
|
||||
fun stopNeo4j() {
|
||||
embeddedDatabaseServer.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
試してないけどSpring Data Neo4jのRepositoryも使えると思う
|
Loading…
Reference in New Issue