我々はいくつかの異なるAPIサービスをテストするために、Maven原型を使用して空手のテストプロジェクトを生成しています。私たちは、このエンドポイントがローカルに私たちのマシン上で実行されている場合の罰金を作品のエンドポイントとテストを行う機能ファイルを持っています。しかし、我々はDEV環境に私たちの(展開)サービスへのURLを使用するCI環境でこれらの空手のテストを実行したいと思います。私たちが実行した場合mvn clean install
、当社のCIパイプライン上で機能を実行しているとき、私たちは、エラーが発生します。
com.intuit.karate.exception.KarateException:
MyFeatureTest.feature:8 -
java.net.SocketException: Connection reset
当社のコンフィギュレーション
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>our-karate-tests</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<maven.compiler.version>3.6.0</maven.compiler.version>
<karate.version>0.9.5</karate.version>
</properties>
<dependencies>
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-apache</artifactId>
<version>${karate.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-junit4</artifactId>
<version>${karate.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<testResources>
<testResource>
<directory>src/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
<compilerArgument>-Werror</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
</build>
</project>
MyFeatureTest.java
import com.intuit.karate.KarateOptions;
import com.intuit.karate.junit4.Karate;
import com.junit.runner.RunWith;
@RunWith(Karate.class)
@KarateOptions(features="classpath:MyFeatureTest.feature")
public class MyFeatureTest {
}
MyFeatureTest.feature
Feature: test an endpoint
Background:
* url 'https://dev.myapplication.com/api/signin'
* configure ssl = true
Scenario: test request
Given request {"username":"john", "password":"doe"}
When method post
Then status 200
And match response == {resp:"success"}
私たちは、試してみました:
我々は(ローカルおよび展開サービス)何の問題もなくポストマンを介してサービスを呼び出すことができます。我々はまた、例えば、GETのために、異なる方法を実行しようとしています。このすべてのアウト奇妙な部分は、接続リセット・エラーは、当社のCI環境で発生しますが、我々は、ローカル機能を実行すると、我々が得るということですorg.apache.http.conn.ConnectTimeoutException: connect to https://dev.myapplication.com:443 failed: connection timeout
。
我々は、それが空手-apacheのクライアントに関連している感じを持っているが、我々はまた、apacheの-ジャージを使用しようとしました。我々は、同様ジャージクライアントを使用する場合残念ながら、我々は同じ問題を取得します。我々はまた、SSLに関連するかもしれないと思いました。非SSLサービスを使用して(と機能からのSSL設定を削除)してもしかし、同じ問題が発生します。我々は、単にGET要求をテストするだけでなく、無益な試みで、非HTTPSからテスト応答にgoogle.comのようなweb.archive.orgようなウェブサイトだけでなく、httpsのものを試してみました。それでも、同じ問題が発生します。
非常にあなたがに対処するためのHTTPプロキシを持っているように聞こえます。
そのような場合には、ドキュメントを参照してください。https://github.com/intuit/karate#configure
* configure proxy = 'http://my.proxy.host:8080'