私は現在、いくつかのデータをレガシーアプリケーションから抽出するために、いくつかのかなり混乱したクラスを準備し、いくつかの依存関係をモックに置き換えるためにpowermockを使用しています。Powermock without JUnit
したがって、私は基本的にありませんJUnitテストを、持っている:
@RunWith(PowerMockRunner.class)
@PrepareForTest(LegacyDependency.class)
public class ThisIsNotReallyATest {
@Test
public void extractData() {
... prepare and wire mocks
// new ClassUnderTest() will essentally call LegacyDependency.getInstance()
Object result = new ClassUnderTest().doSomething();
// save result for later reference
}
}
は、このように:これはテストではありません。これは、ひどくモデル化されたさまざまな依存関係を回避するためにPowermockの機能を使用するユーティリティクラスです。一切ユニットテストに接続されていないユーティリティを作成するためのテストフレームワークを使用したとして
は私が本当の悪い感じになり、質問です:
私は、ESP(powermockを使用することができ、静的/最後のためのPrepareForTest機能。/etc。)をスタンドアロンのソフトウェアにインストールしますか?もしそうなら:どのように?
あなたのために設計されていないもののフレームワークを誤用しています。レガシーアプリケーションのソースコードを制御できる場合は、これを行う代わりにリファクタリングする必要があります。実稼働環境でのバイトコード検証の失敗に備えていますか? (はい、これはpowermockがあなたに持ってくるものです) – rkosegi
これは、今後のリファクタリングのテストベースラインを準備するためのツールです。これは、その混乱の一部を掃除している間の一時的な使用のためです。 – mtj
あなたは単にPowermockのランタイムバイトコードの置換/生成を利用しているようです。どうしてJavassistやByteBuddyなどを直接使ってみませんか? –