状況:いくつかの外部WebServicesで動作するクラスMyControllerがあります。jUnitテストからmavenフィルタリングを起動する方法は?
public class MyController {
private String integrationWebServiceURL;
}
このクラスのWebサービスのURLが記述子で構成コントローラ豆中に渡される(applicationContext.xmlを)
<bean id="myController" class="com.mypath.MyController">
<property name="integrationWebServiceURL" value="${integration.web.service.url}"/>
</bean>
値は動的であり、実際の値は、プロパティに格納されアプリケーションファイル。プロパティ
integration.web.service.url=${pom.integration.web.service.url}
しかし、それは終わりではありません - 本当のVA lueは、filtering = trueのmavenプロジェクトファイル(pom.xml)に保存されます。我々はを使用する場合
<pom.integration.web.service.url>http://mywebservices.com</pom.integration.web.service.url>
ので、MVNテストのpom.xmlから値がapplication.propertiesにプレースホルダを適切にコピーし、その後、私のクラスのテストはうまく機能しているをインストールします。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/applicationContext.xml"})
public class MyControllerTest {
}
質問:異なる設定でプレイできるようにし、IDEのデバッグ機能を使用するために、私はIDEから私のテストを起動する必要があります。しかし、単純なMavenビルドをせずにIDEからこのテストを簡単に起動すれば、私のWebサービスアドレスは単にapplication.propertiesから取得され、 "$ {pom.integration.web.service.url}"に等しくなります(例えば、Mavenフィルタリングのプロセスはdoesnテストの前に仕事をしないでください)。 pom.xmlから自分の値を抽出するためにMaven、Spring、またはjUnitを調整するにはどうすればよいですか?
注:私はテストクラスで使用されるapplication.propertiesまたはapplicationContext.xmlをファイルに明示的に私は簡単なセットをできることを、この値を知っているが、私はのpom.xmlからこの値を抽出する必要があります。
mvn test
その後、すべてがポンポン変数のフィルタリングで行く必要があります。
あなたの場合Eclipseを使用するか、M2EclipseまたはM2Eプラグインを試しましたか? – Ralph
POMから値を取得する必要があるのはなぜですか?それとも、私が本当に意味するのは、POMがその情報を保存するのに適している理由は何ですか?私はそのようなデータを、成果物のプロパティファイル_outside_に保存し、実行時にのみアクセスすることをお勧めします。テスト用クラスパス上でのみ利用可能な、テスト固有のバージョンのプロパティファイルを作成することができます。 –
@Ralph IntelliJ IDEAは私のIDEです。 – dim1902