আপনি এটি করতে পারবেন না কারণ অনুমান অনুসারে আপনি একই টীকাগুলি একই বারে একই টীকাগুলি দু'বার রাখতে পারবেন না।
তাহলে সমাধান কি? সমাধানটি হ'ল @RunWith()
রানারকে কেবল একটির সাথে রাখলে আপনি ছাড়া দাঁড়াতে পারবেন না এবং অন্যটিকে অন্য কিছু দিয়ে প্রতিস্থাপন করতে পারেন। আপনার ক্ষেত্রে আমি অনুমান করি আপনি এটি মুছে MockitoJUnitRunner
ফেলবেন এবং প্রোগ্রাম্যাটিকভাবে এটি করবেন do
বাস্তবে এটি চালিত একমাত্র জিনিস:
MockitoAnnotations.initMocks(test);
পরীক্ষার ক্ষেত্রে শুরুর দিকে। সুতরাং, সহজ সমাধানটি এই কোডটি setUp()
পদ্ধতিতে রাখা:
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
আমি নিশ্চিত নই, তবে সম্ভবত পতাকা ব্যবহার করে আপনার এই পদ্ধতির একাধিক কল এড়ানো উচিত:
private boolean mockInitialized = false;
@Before
public void setUp() {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
তবে আরও ভাল, পুনরায় ব্যবহারযোগ্য সমাধান JUnt এর নিয়মগুলির সাথে প্রয়োগ করা যেতে পারে।
public class MockitoRule extends TestWatcher {
private boolean mockInitialized = false;
@Override
protected void starting(Description d) {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
}
এখন কেবল আপনার পরীক্ষার শ্রেণিতে নিম্নলিখিত লাইনটি যুক্ত করুন:
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
এবং আপনি যে কোনও রানারের সাথে এই পরীক্ষাটি চালাতে পারেন run