0

以下のように、URLClassLoader を使用して Selenium IDE によって生成された JUnit テスト ケースをロードする Java アプリケーションを作成しました。

    public void run() {
    System.out.println("JUnit thread started");

    System.out.println("My classy: "+classy);
    JUnitCore junit = new JUnitCore();
    Result result = junit.run(classy);

classy は次のように作成されます。

    Class classy = null;

    String url2 = "file://" + junitfile.replace("\\","/");

    URL url = new URL(url2);

    URLClassLoader loader = new URLClassLoader(new URL[]{url});


    try {

        classy = loader.loadClass(classToBeLoaded);

Eclipse を使用すると、すべてが機能します。ただし、Java プログラムを実行可能な Jar としてエクスポートし、Java アプリケーションで JUnit クラス (test.Test1 など) を使用するようにすると、次のようなスタック トレースが得られます。

test.Test1
JUnit thread started
My classy: class test.Test1
Failure count: 1
initializationError(test.Test1): org/openqa/selenium/WebDriver
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
initializationError(test.Test1)
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
org/openqa/selenium/WebDriver
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at org.junit.internal.builders.SuiteMethodBuilder.hasSuiteMethod(SuiteMe
thodBuilder.java:18)
        at org.junit.internal.builders.SuiteMethodBuilder.runnerForClass(SuiteMe
thodBuilder.java:10)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilde
r.java:59)
        at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForC
lass(AllDefaultPossibilitiesBuilder.java:26)
        at org.junit.runner.Computer.getRunner(Computer.java:40)
        at org.junit.runner.Computer$1.runnerForClass(Computer.java:31)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilde
r.java:59)
        at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:101)

        at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:87)
        at org.junit.runners.Suite.<init>(Suite.java:80)
        at org.junit.runner.Computer.getSuite(Computer.java:28)
        at org.junit.runner.Request.classes(Request.java:75)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
        at malerisch.JUnitPanel$ThreadJUnit.run(JUnitPanel.java:315)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 19 more

org.openqa.selenium.WebDriver クラスは jar に含まれているため、見つからない理由がわかりません。

さらに情報が必要な場合は、喜んで含めてください。

乾杯、

ロベルト

4

1 に答える 1

0

パッケージ エクスプローラーでプロジェクトを右クリックし、[プロパティ] に移動して [ライブラリ] タブに移動し、[ライブラリの追加] ボタンをクリックして、[JUnit] を選択し、[次へ >] をクリックします。そこから対処できるはずです。

ソース: junit の java.lang.NoClassDefFoundError

于 2013-08-30T21:49:49.937 に答える