약 1000 개의 테스트로 프로젝트를 상속 받았습니다. 최근까지는 gradle clean test
명령을 입력했을 때 모두 실행되었습니다.일부 테스트가 내 Gradle 빌드에서 실행되지 않는 이유는 무엇입니까?
하루가 다 끝날 때까지 일부 테스트가 테스트 통계에 포함되지 않았습니다 (통과 테스트, 실패 테스트 및 무시 된 테스트의 수, 모든 테스트 실행 종료시 Gradle 및 Idea 출력). 코드가 아직 남아 있고 테스트가 무시되지 않았습니다. 빌드 스크립트도 수정되지 않았습니다. IntelliJ Idea에서 테스트를 실행할 때 실행됩니다 (즉, 테스트가 실행되지 않는 이유를 설명 할 수있는 컴파일러 오류가 없음).
본인은 테스트가 실행되지만 다음과 같은 이유로 전반적인 통계에는 포함되지 않는다고 생각합니다. 나는 gradle --debug --rerun-tasks clean test > 2017_11_24_gradle.log
명령을 실행했다. 그런 다음 결과가 2017_11_24_gradle.log
인 파일 (grep "com.mycompany.comm.CommApplicationTests"2017_11_24_gradle.log)에 누락 된 테스트 중 하나 인 com.mycompany.comm.CommApplicationTests
이 있는지 찾아 보았습니다. 내가 테스트가 실행된다는 결론이에서
17:00:54.861 [QUIET] [system.out] 17:00:54.860 [DEBUG] [org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor] Executing test class com.mycompany.comm.CommApplicationTests
17:00:54.867 [DEBUG] [TestEventLogger] com.mycompany.comm.CommApplicationTests STARTED
17:00:55.169 [DEBUG] [TestEventLogger] com.mycompany.comm.CommApplicationTests > validateProtocol STARTED
17:00:55.875 [DEBUG] [TestEventLogger] com.mycompany.comm.CommApplicationTests > validateProtocol STANDARD_OUT
17:00:57.272 [DEBUG] [TestEventLogger] com.mycompany.comm.CommApplicationTests > validateProtocol PASSED
17:00:57.273 [DEBUG] [TestEventLogger] com.mycompany.comm.CommApplicationTests > contextLoads STARTED
17:00:57.273 [DEBUG] [TestEventLogger] com.mycompany.comm.CommApplicationTests > contextLoads PASSED
17:00:57.274 [DEBUG] [TestEventLogger] com.mycompany.comm.CommApplicationTests PASSED
:
이 그렙의 출력됩니다. 또는 일부 테스트 결과의 비 포함을 고려하지 않을 수 있습니다
유일한 의심스러운 점은 이것이다 :
16:37:47.251 [ERROR] [system.err] *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
16:37:47.343 [ERROR] [system.err] *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
16:37:47.343 [ERROR] [system.err] *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
16:37:47.346 [ERROR] [system.err] *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
16:37:47.346 [ERROR] [system.err] *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
16:37:47.347 [ERROR] [system.err] *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
이러한 메시지는 gradle --debug --rerun-tasks clean test
을 실행하는 동안 System.err
출력이다.
erorr을 수정하거나 해결하려면 어떻게해야합니까? (즉, 모든 실행 된 테스트가 Gradle이 끝에 인쇄하는 최종 통계 (통과, 실패 및 무시 된 테스트의 수)에 반영되는지 확인하십시오).
업데이트 1 (2017년 11월 27일 10시 49분 MSK) :
오류가 아래의 code fragment에서 발생하는 것은 (// Line 844
주석) 같습니다
if (!errorOutstanding) {
jplis_assert(agent->mInstrumentationImpl != NULL);
jplis_assert(agent->mTransform != NULL);
transformedBufferObject = (*jnienv)->CallObjectMethod(
jnienv,
agent->mInstrumentationImpl,
agent->mTransform,
loaderObject,
classNameStringObject,
classBeingRedefined,
protectionDomain,
classFileBufferObject,
is_retransformer);
errorOutstanding = checkForAndClearThrowable(jnienv);
jplis_assert_msg(!errorOutstanding, "transform method call failed"); // Line 844
}
업데이트 2 (27.11. 2017 16:51 MSK) :이 오류는 Mac에서는 발생하지 않습니다 (Gradle은 합격, 합격 및 불합격 검사의 합계 수를보고합니다).
업데이트 3 (2017년 11월 29일 12시 48분 MSK) :
내가 자바 1.8.0_152 및 Gradle을 2.14를 사용하고 있습니다. 고객 요구 사항으로 인해 Gradle 버전을 업그레이드 할 수 없습니다.
java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
gradle -version
------------------------------------------------------------
Gradle 2.14
------------------------------------------------------------
Build time: 2016-06-14 07:16:37 UTC
Revision: cba5fea19f1e0c6a00cc904828a6ec4e11739abc
Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_152 (Oracle Corporation 25.152-b16)
OS: Windows 10 10.0 amd64
경고가 JDK에서 온다고 가정하면 오류가 있거나없는 시스템에서 사용중인 Java 버전을 말하면 더 의미가 있습니다. 또한 gradle 버전은 의미있을 수 있습니다. 그리고 마지막으로, 그라디언트 포럼은 이것에 대한 지원을받는 더 좋은 장소 일 수 있습니다. – tkruse
Java 및 Gradle 버전에 대해서는 update 3을 참조하십시오. –