복붙노트

[SPRING] JUnit 테스트 클래스가 JMeter에 표시되지 않습니다.

SPRING

JUnit 테스트 클래스가 JMeter에 표시되지 않습니다.

JMeter 2.7에서 JUnit 테스트를 실행하려고합니다. 그러나 JUnit 샘플러의 드롭 다운에서 테스트 클래스를 선택하면 나타나지 않습니다. 내가 알기 론 테스트 클래스는 모든 테스트에 대해 다른 클래스 (AbstractJUnit4SpringContextTests는 기본 클래스이며 여러 가지 추상 클래스가있는 편리한 메서드를 제공함)에서 확장되기 때문입니다. 이러한 기본 클래스에서 확장되지 않은 테스트 클래스를 선택할 수 있습니다.

테스트 클래스를 포함하는 JAR 파일은 Maven (test-jar)에 의해 생성되고 모든 종속성을 포함하는 JAR은 maven fatjar 플러그인에 의해 생성된다. 두 jar는 JMeter / lib / junit 디렉토리에 있습니다.

JMeter 매뉴얼에 모든 테스트 클래스가 JUnit 테스트 클래스에서 확장되어야한다고 나와 있지만 JUnit3에만 해당되는 것으로 보인다. JUnit4를 사용하면 JMeter가 그러한 요구 사항을 필요로하지 않습니다. 물론 모든 테스트를 다시 작성하여 기본 클래스에서 확장 할 필요는 없지만 유지 관리 문제가 커질 수 있습니다. 그렇다면 기본 클래스에서 확장 된 JMeter로 JUnit 테스트를 어떻게 수행합니까?

2012-08-09 업데이트

PMD의 힌트 덕분에 JMeter의 lib 폴더에 하나씩 종속성을 복사했습니다. 이제 GUI에 모든 유닛 테스트가 표시됩니다. 그게 가능해지기 전에, 저는 두 가지 문제를 혼자서 해결해야했습니다.

이제 JUnit 테스트 케이스를 실행할 수있다. 그러나, 내 수업의 여러 참조는 @Resource로 주석 처리됩니다. JMeter의 Testrunner는 참조가 액세스 될 때마다 JMeter 로그에서 볼 수있는 것처럼 NullPointerException이 발생하기 때문에 이러한 참조를 삽입하지 않는 것 같습니다. 그렇다면 JMeter가 어떻게 그러한 의존성을 주입하게 할 수 있습니까?

해결법

  1. ==============================

    1.lib / junit 폴더에 junit 클래스를 넣고 lib 폴더에 의존성을 넣어야합니다.

    lib / junit 폴더에 junit 클래스를 넣고 lib 폴더에 의존성을 넣어야합니다.

    fatjar를 사용해서는 안되며, 때로는이 도구로 meta-inf에서 파일을 제거하거나 각 항아리에있는 스프링 pûts 하나만 유지하면됩니다.

    lib 폴더에 모든 항아리를 하나씩 추가하십시오.

    jmeter 로그를 검사하여 예외가 있는지 확인하십시오.

    그래도 실패하면 jmeter 사용자 목록에 질문을하고 대답을 얻지 못하면 간단한 테스트 케이스를 만들고 버그를여십시오.

  2. ==============================

    2.JUnit sampler가 v4 테스트를 검색해야하는지 여부를 확인 했습니까?

    JUnit sampler가 v4 테스트를 검색해야하는지 여부를 확인 했습니까?

    나는 JUnit 4로 만든 간단한 프로젝트에서이 작업을 시도했다. @Test 어노테이션으로 테스트 만 필터하면 TestCase 클래스가 확장되지 않는다.

  3. ==============================

    3.Jmeter 4.0을 사용하면 JMeter의 lib 폴더에 의존성을 넣는 대신 "user.classpath"속성을 통해 의존성 위치에 대한 경로를 지정할 수 있습니다. 이 속성은 JMeter 설치의 / bin 폴더 아래에있는 "user.properties"파일에 있습니다.

    Jmeter 4.0을 사용하면 JMeter의 lib 폴더에 의존성을 넣는 대신 "user.classpath"속성을 통해 의존성 위치에 대한 경로를 지정할 수 있습니다. 이 속성은 JMeter 설치의 / bin 폴더 아래에있는 "user.properties"파일에 있습니다.

    패스 항목은 jar 파일이나 디렉토리 일 수 있습니다. 그러한 디렉토리 내의 임의의 jar 파일은 자동적으로 포함됩니다. 서브 디렉토리 내의 jar 파일은 무시됩니다.

    경로를 추가 할 때주의를 기울이고 플랫폼 경로 구분 기호 (Java에서 java.io.File.separatorChar)를 사용하여 여러 경로를 구분하십시오.

    #Example for windows (; separator)
    #user.classpath=../classes;../lib;../app1/jar1.jar;../app2/jar2.jar
    
    #Example for linux (:separator)
    #user.classpath=../classes:../lib:../app1/jar1.jar:../app2/jar2.jar
    
    user.classpath=C:/git/adf-bpm-autotesting-tool/libs;C:/git/adf-bpm-autotesting-tool/libs/selenium-tools;C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0;C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0/libs
    

    jmeter gui가 시작되는 동안 올바른 결과로 jmeter.log 레코드에 다음과 같이 표시됩니다.

    2019-04-08 18:51:46,871 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs
    2019-04-08 18:51:46,872 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-tools
    2019-04-08 18:51:46,873 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0
    2019-04-08 18:51:46,873 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0/libs
    

    그 후 JUnit Request Sample에서 모든 junit 테스트를 찾을 수 있습니다.

  4. ==============================

    4.Teinacher가 썼 듯이 모든 프로젝트 종속성 (모든 .jar 파일)을 JMeter의 / lib 디렉토리에 복사 한 후에 JMeter에 JUnit 테스트가 표시됩니다 (JMeter를 다시 시작해야 함).

    Teinacher가 썼 듯이 모든 프로젝트 종속성 (모든 .jar 파일)을 JMeter의 / lib 디렉토리에 복사 한 후에 JMeter에 JUnit 테스트가 표시됩니다 (JMeter를 다시 시작해야 함).

  5. from https://stackoverflow.com/questions/11687309/junit-test-classes-not-showing-up-in-jmeter by cc-by-sa and MIT license