현재 회사에서는 GhatGPT vs Claude vs Gemini를 다 사용하고 있다.
GhatGPT-4o vs Claude 3.5 Sonnet vs Gemini 1.5 Pro
총 이렇게 사용을 하고 있는데 체감상 프로그래밍하는데 있어서 좀 더 나은 플랫폼은 어떤건지 궁금하기도 했다.
아래는 간단한 에러(?)를 잡는 예시를 총 3개의 플랫폼에 똑같이 질문했다
다만 역할을 정해주는 등의 프롬프트 없이 테스트를 해봤다
문제
plugins {
id 'org.springframework.boot' version '2.6.8'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.group'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
간단한 gradle 빌드 파일의 내용이다. Intelij IDE에서 실행하면 tasks.named 안의 useJUnitPlatform()에 다음과 같은 에러가 뜬다.
No candidates found for method call useJUnitPlatform.
이 부분을 각각 어떤 결과를 보여주는지 살펴보자.
질문
plugins {
id 'org.springframework.boot' version '2.6.8'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.group'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.junit.jupiter:junit-jupiter-engine' // Add this line
}
tasks.named('test') {
useJUnitPlatform()
}
해당 코드에서 useJUnitPlatform() 에 대해서 설명해주고 IDE에 빨간 줄이 있으면서 다음과 같은 내용이 있는데 해결 방법을 알려줘
No candidates found for method call useJUnitPlatform.
ChatGPT - 4o
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.3'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.3'
}
tasks.withType(Test) {
useJUnitPlatform()
}
===== 전체 코드 =====
plugins {
id 'org.springframework.boot' version '2.6.8'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.group'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.3'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.3'
}
tasks.withType(Test) {
useJUnitPlatform()
}
GPT 같은 경우 버전을 명시했다 왜 5.9.3을 추천했을까란 궁금증때문에 Maven Repository에 들어가서 확인해봤으나 이유를 모르겠다
5.9.3이 사용 조회수가 많은 것도 아닌데 말이다...? (최신 버전은 5.11.4이다.)
또한 tasks.withType(Test)로 변경을 했는데 보통 모든 테스트에 대한 설정을 저렇게 하는데 아마도 큰 허용 범위로써 설정을 하면 사용자의 요구에 대한 해결을 빠르게 할 수 있어서 저런 답변을 하지 않았을까 싶다
하지만 IDE에서는 불필요한 테스트에 대한 경고(?)를 날려준다
Claude
plugins {
id 'org.springframework.boot' version '2.6.8'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.group'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.junit.jupiter:junit-jupiter-engine'
}
test { // tasks.named('test') 대신 이렇게 변경
useJUnitPlatform()
}
테스트에 대한 버전 명시를 하지 않았고 테스크에 대해서도 이름으로 명시했다.
Gemini 1.5 pro
dependencies {
// ... other dependencies ...
testImplementation 'org.junit.jupiter:junit-jupiter-engine'
}
잼미니는 너무 심플하게 대답했다... 장황한 설명을 다 제외하고 해결법을 위와 같이 의존성 주입에 대한 명시만 해놨다..
결론
위는 간단한 예시를 보여준 것 뿐이고 실질적으로 코딩에 대한 부분에 있어서는 체감상 Claude가 한수위인 것 같다.