홈>
Kotlin 용 JMH 플러그인을 사용하여 벤치 마크 테스트를 만들려고합니다. 프로젝트는 gradle에 의해 빌드되고 Spring Boot를 사용합니다. 제공된 작업 (./gradlew jmh)을 사용 하여이 테스트를 실행하고 싶습니다. 저는 작동하지 않습니다.
명령을 사용하여이 코드를 실행합니다
./gradlew jmh
내 build.gradle.kts는 다음과 같습니다.
import info.solidsoft.gradle.pitest.PitestPluginExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("me.champeau.gradle:jmh-gradle-plugin:0.4.8")
}
}
plugins {
id("idea")
id("org.springframework.boot") version "2.1.6.RELEASE"
id("io.spring.dependency-management") version "1.0.8.RELEASE"
kotlin("jvm") version "1.3.21"
kotlin("plugin.spring") version "1.3.21"
id("me.champeau.gradle.jmh") version "0.4.8"
}
jmh {
isIncludeTests = true
}
tasks.bootJar {
archiveFileName.set("XXX.jar")
archiveVersion.set("0.1.0")
}
repositories {
mavenCentral()
maven { setUrl("http://oss.jfrog.org/artifactory/oss-snapshot-local/") }
}
dependencyManagement {
dependencies {
(...)
dependency("org.openjdk.jmh:jmh-core:1.21")
dependency("org.openjdk.jmh:jmh-generator-annprocess:1.21")
dependency("org.openjdk.jmh:jmh-generator-bytecode:1.21")
}
}
dependencies {
(...)
jmh("org.openjdk.jmh:jmh-core")
jmh("org.openjdk.jmh:jmh-generator-annprocess")
jmh("org.openjdk.jmh:jmh-generator-bytecode")
jmh("org.springframework.boot:spring-boot-starter-test")
jmh("org.junit.jupiter:junit-jupiter-api")
jmh("org.junit.jupiter:junit-jupiter-params")
jmh("org.assertj:assertj-core")
jmh("io.projectreactor:reactor-test")
jmh("org.springframework.boot:spring-boot-starter-webflux")
}
tasks.test {
useJUnitPlatform()
}
tasks.integrationTest {
useJUnitPlatform()
}
tasks.withType<KotlinCompile>().configureEach {
kotlinOptions.jvmTarget = "1.8"
}
다음 테스트 :
@BenchmarkMode(Mode.All)
@State(Scope.Benchmark)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Fork(0, jvmArgsAppend = ["-XX:+PrintGCDetails"])
@Warmup(iterations = 1)
@Measurement(iterations = 3)
@ExtendWith(SpringExtension::class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
open class StorageObjectControllerTest {
private lateinit var context: ApplicationContext
@Test
fun setup() {
val opt = OptionsBuilder()
.include(this.javaClass.name)
.threads(1)
.build()
Runner(opt).run()
}
@Setup
fun init() {
// add test data
}
@TearDown
fun cleanup() {
// remove data after test
}
@Benchmark
@BenchmarkMode(Mode.AverageTime)
fun latency_getAllObjects() {
(...)
}
@Benchmark
@BenchmarkMode(Mode.Throughput)
fun throughput_getAllObjects() {
(...)
}
}
오류 :
ava.io.FileNotFoundException: class path resource [org/springframework/web/reactive/config/WebFluxConfigurationSupport.class] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:51)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:123)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:81)
at org.springframework.context.annotation.ConfigurationClassParser.retrieveBeanMethodMetadata(ConfigurationClassParser.java:399)
java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
at org.springframework.util.Assert.notEmpty(Assert.java:464)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:173)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:116)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:396)
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:875)
도움을주세요
- 답변 # 1
관련 자료
- java - Post REST API 만 작동하고, PUT, GET, DELETE API가 스프링 부트 애플리케이션에서 작동하지 않습니다
- java - 봄에만 단위 테스트 실행에 대한 로그 수준을 변경하는 방법
- reactjs - React Spring Transition이 제대로 작동하지 않습니다
- java - Maven 테스트는 Spring Boot 22 및 JUnit 5에서 Cucumber 시나리오를 실행하지 않습니다
- java - 싱글 톤 클래스에서 작동하지 않는 스프링 의존성 주입
- java - @Valid가 작동하지 않는 스프링 부트 유효성 검사 주석
- java - Spring Boot permitAll이 WebSecurityConfigurerAdapter에서 작동하지 않습니다
- Java spring - 자바 스프링 - 작동하지 않는 간단한 양식 게시
- Spring Boot JPA @UpdateTimestamp가 Postgresql에서 작동하지 않음
- java - Spring Boot Cucumber 테스트는 자리 표시 자 'randomuuid'를 해결할 수 없습니다
- Keycloak Ouath2 통합이 스프링 클라우드 데이터 흐름 230에서 작동하지 않습니다
- java - busienss 논리 및 DB 연결을위한 Junit 스프링 부트 유닛 테스트
- 스프링 부트의 트랜잭션 동기화가 제대로 작동하지 않습니다
- Java Config를 사용하여 Spring Batch에서 작동하지 않는 재시도
관련 질문
- java : Spring Boot 애플리케이션이 org.apache.logging.log4j.util.PropertiesUtil 클래스를 초기화 할 수 없습니다.
- java : Springboot swagger URL에 WhiteLabel 오류 페이지가 표시됨
- spring : Gradle 프로젝트를 빌드 할 수 없습니다.
- Bean을 사용하여 여러 저장소로 JAVA 응용 프로그램을 시드하는 방법은 무엇입니까?
- java : Spring Boot @retryable 재 시도하지 않음
- java : S3에서 파일을 다운로드 할 때 파일 크기를 기록하기 위해 MeterRegistry를 사용하여 지표를 생성하려면 어떻게해야합니까?
- java : Spring Boot Actuator가 작동하지 않음-Whitelabel 오류 페이지
- java : long 유형의 메소드 매개 변수에 대한 URI 템플릿 변수 'id'가 없습니다.
- org.springframework.security.access.AccessDeniedException에 대한 사용자 정의 예외 핸들러 : 액세스가 거부되었습니다.
- java : 다른 브로커와 관련된 여러 Kafka 토픽을 어떻게 사용할 수 있습니까?
테스트에 @RunWith (SpringRunner.class)를 추가 할 수 있다고 생각합니다. 스프링 테스트 + jmh
에서 자세한 내용을 확인할 수 있습니다.