5

Jenkinsを介してさまざまなテスト環境(開発、ステージングなど)で実行する必要があるJUnitテストを含むJavaプロジェクトがあります。

現在、さまざまな環境でプロジェクトをビルドし、URL、ユーザー名、およびパスワードをテストランナーに渡す必要がある解決策は、各環境の特定のプロパティファイルをPOMファイルにロードすることです。プロパティファイルは、Mavenビルドコマンドを介して環境ごとに設定されます。

mvn clean install -DappConfig = /src/test/resouces/integration.environment.properties

pom.xml内:

<plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <systemPropertyVariables>
                    <appConfig>${app.config}</appConfig>
                </systemPropertyVariables>
            </configuration>
        </plugin>
    </plugins>

JUnitテストランナークラスの場合:

public class BoGeneralTest extends TestCase {

    protected WebDriver driver;
    protected BoHomePage boHomePage;
    protected static Properties systemProps;
    String url = systemProps.getProperty("Url");
    String username = systemProps.getProperty("Username");
    String password = systemProps.getProperty("Password");
    int defaultWaitTime = Integer.parseInt(systemProps.getProperty("waitTimeForElements"));
    String regUsername = RandomStringUtils.randomAlphabetic(5);

    final static String appConfigPath = System.getProperty("appConfig");

    static {
        systemProps = new Properties();
        try {

            systemProps.load(new FileReader(new File(appConfigPath)));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

この構成の問題は、個々のテストをEclipse経由で個別に実行できないことです。これは、テストがappConfigMavenから受信することを期待しており、NullPointerExceptionが発生するためです。

どんな提案でも大歓迎です。

4

2 に答える 2

2

単一のテストを実行するための前提条件は、デフォルトの実行環境を指定するテストケースごとに実行構成を用意することです。この設定は、テストケースごとにローカルで行う必要があることに注意してください。

[Eclipse引数]タブ/[VM引数]ファイルで、VMパラメータを指定する必要があります。

-DappConfig=src/test/resources/pp1.environment.properties

これは、環境ログインの詳細を持つそれぞれのプロパティファイルへのパスを保持します。

プロジェクトのsrc/test/resourcesソースフォルダーの下に定義されている5つのプロパティファイルがあります。

environment1.properties
environment2.properties
environment3.properties
environment4.properties
environment5.properties
于 2013-04-25T10:21:53.367 に答える
-1

ホワイトボックスティーシング:

UnitTestsは、依存関係に依存するのではなく、作業単位をテストする必要があります。一般的なルールは、依存関係をモックし、外部システムをスタブ化して、テストするための安全な環境を確保することです。

IntegrationTestsは、何らかの方法で実際の依存関係を安全な環境に注入し、テストを実行する必要があります。

ブラックボックステスト:

FunctionalTestsは、あなたが達成したいと思うものです。通常、統合テストと同じ構成を使用し、すべての自動テストをプロジェクトpomにバンドルし、すべてのmvncleanisntallでテストをアトミックに実行できます。一般的なフローは、統合テスト前のフェーズでサーブレットコンテナを起動し、それに対してテストを実行することです。常にユーザーの観点からテストする必要があります。

于 2013-03-20T09:55:31.520 に答える