2

実行時 (Windows 7 コマンド ライン):

C:\rest-app\src\main\java\com\mycompany\app\Test>java org.testng.TestNG testng.xml

私は得る:

===============================================

Suite1 テストの合計実行: 0、失敗: 0、スキップ: 0

===============================================

これは、testng.xml ファイルが次のようになったときです。

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >
<test name="SandBoxTests"   >
    <packages>
        <package name="com.mycompany.app.Test" />
    </packages>
</test>
</suite>

そのパッケージのクラスには 3 つのテストがあります。

testng.xml ファイルを次のように変更すると:

<suite name="Suite1" verbose="1" >
<test name="SandBoxTests"   >
    <classes>
        <class name="com.mycompany.app.Test.SandBoxTests">
            <methods>
                <include name="com.mycompany.app.Test.SandBoxTests.TestA"/>
            </methods>
        </class>
    </classes>
 </test>
</suite>

私は応答を取得します:

[TestNG] [エラー] クラスパスにクラスが見つかりません: com.mycompany.app.Test.SandBoxTests

私のクラスパスは次のようになります:

C:\rest-app\lib\ *;C:\rest-app\src\main\java\com\mycompany\app\Test\ *

最初のディレクトリは、testng を含む、含まれているすべての .jar ファイルを指し、最後のディレクトリには、テストを実行しようとしているクラス ファイルの場所が含まれています。私のtestng.xmlファイルもあります。

では、TestNG が私のパッケージを問題なく見つけているように見えるのに、私のクラスを認識できないのはどうしてでしょうか?

私のコードは次のとおりです。

package com.mycompany.app.Test;

import com.mycompany.app.RestMethods;
import com.mycompany.app.Test.TestObjects.AutoCompleteList;
import com.mycompany.app.Test.TestObjects.AutocompleteItem;
import com.mycompany.app.Test.TestObjects.Title;
import com.thoughtworks.xstream.XStream;
import org.apache.http.HttpResponse;
import org.testng.Reporter;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import static org.junit.Assert.assertTrue;


public class SandBoxTests

{ ...

@BeforeClass
public void SetupSandBoxTests() throws Exception
{

}

@Test
public void TestA() throws Exception
{
    ...
}

...
}

編集: クラスパスを更新して、TestNG テストを含むコンパイル済みソース ファイルの場所を含め、testng.xml ファイルを含むパスのルートも含めましたが、何も変更されていません。追加した:

C:\rest-app\out\production\Main\ *;C:\rest-app\out\production\Main\com\homeaway\app\Test\ *

EDIT 10/25: Maven はテストを正しくビルドおよび実行するようになりましたが、コマンド ラインから testng を実行することはまだできません。Maven でテストを実行するには、使用する必要がありました

<includes>
    <include>**/*.java</include>
</includes>

それ以外の:

<suiteXmlFiles>
    <suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
4

4 に答える 4

0

クラスパスは、Javaファイル自体ではなく、パッケージの開始位置を指している必要があります。

testng.xmlをsrc/main / javaに移動し、次のクラスパスを使用します。

C:\ rest-app \ lib *; C:\ rest-app \ src \ main \ java \

編集:あなたが実際にテストスイートを直接実行しようとしていることに気づきました。これは、コンパイルされたテストクラスで実行する必要があります。クラスパスはバイナリを指している必要があります。

ただし、デフォルトの設定を使用する場合、これはすべてMavenによって処理されます。

src/main/java/ <- your java code
src/test/java/ <- your test code where test-classes are named *Test.java

pom.xml内:

<dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.3.1</version>
      <scope>test</scope>
    </dependency>

参照: http: //maven.apache.org/plugins/maven-surefire-plugin/examples/testng.html

于 2012-10-23T20:05:33.713 に答える
0

ソースファイルがプロジェクトによってコンパイルされない場合があります。テストを実行するためにMavenを使用していますか?

于 2012-10-23T20:06:52.877 に答える
0

クラスパスが間違っていると思います。* を含むクラス パス エントリは、クラス ファイルと一致しません。これを参照して、アイデアを得ることができます。あなたのクラスが にC:\rest-app\out\production\Main\com\homeaway\app\Test\ある 場合com\urco\app\Test、パッケージ名の一部なので、クラスパスには C:\rest-app\out\production\Main\ のみを配置する必要があると思います。

それが役立つことを願っています..

于 2012-10-25T12:44:41.037 に答える
0

試しましたか

<suite name="Suite1" verbose="1" >
<test name="SandBoxTests"   >
    <classes>
        <class name="com.mycompany.app.Test.SandBoxTests">
            <methods>
                <include name="TestA"/>
            </methods>
        </class>
    </classes>
 </test>
</suite>

メソッドの下では、クラスパス全体を検索していないと思います。私はこれを試しませんでした。しかし、これはうまくいくはずです

于 2012-10-25T12:27:08.400 に答える