現在、かなり大規模なプロジェクトでいくつかの単体テストでメモリの問題が発生しています。今日の私の髪の引っ張りと研究を通して、私は、オブジェクトがクリーンアップされるべきだと思うほど速くクリーンアップされていないことに関連しているように見えることに気づきました. 私は「cleanup mockito」と「cleanup junit」の調査を開始し、いくつかのブログとフォーラムの投稿に出くわしました。使用方法@Before
と@After
(およびそれらの *Class バージョン) を使用して、すべてのユニットで実行したくない激しいことを行う方法についてです。テスト。これにより、Mockito@Mock
と@InjectMocks
注釈について考えるようになりました。
Mavenビルド中に以下のクラス変数がメモリ内でどのように処理されているかを詳しく説明してもらえますか? オブジェクトは、単体テストの前、最中、または後に作成されますか? 最後の単体テストが完了した後、オブジェクトはすぐに破棄されますか? @After
すべてのクラス変数を null に設定するために使用する必要がありますか?
何度もありがとう。以下は、私が使用する可能性のあるテスト ケースのサンプルです。
@RunWith(MockitoJUnitRunner.class)
public class thisCustomTest {
@Mock
MyCustomSpringBean myCustomerSpringBean;
@InjectMocks
MyBeanToTest myBeanToTest;
@Before
public void config() {
MockitoAnnotations.initMocks(this);
}
@Test
public void someTest() {
//code here
}
}
最後に簡単なまとめ/要約を行うために、私の主な質問は、@After
クラス変数をクリーンアップするようなものを利用する必要があるかどうか、またはJavaの通常のスコープのガベージコレクションのためにそのままにしておく必要があるかどうかです...
クリーンアップの私の考え:
@After
public void cleanup() {
mockedClassVariable = null;
injectedVariable = null;
}