আমি একটি স্ট্যাটিক পদ্ধতির জন্য কিছু ইউনিট পরীক্ষা লিখেছি। স্থির পদ্ধতিতে কেবল একটি যুক্তি লাগে takes যুক্তির ধরণটি একটি চূড়ান্ত শ্রেণি। কোডের ক্ষেত্রে:
public class Utility {
public static Optional<String> getName(Customer customer) {
// method's body.
}
}
public final class Customer {
// class definition
}
সুতরাং Utilityক্লাসের জন্য আমি একটি পরীক্ষা ক্লাস তৈরি করেছি UtilityTestsযাতে আমি এই পদ্ধতির জন্য পরীক্ষাগুলি লিখেছি getName,। ইউনিট পরীক্ষার কাঠামোটি টেস্টএনজি এবং এটি যে মক্কাগুলি ব্যবহৃত হয় তা হ'ল Mockito। সুতরাং একটি সাধারণ পরীক্ষার নিম্নলিখিত কাঠামো থাকে:
public class UtilityTests {
@Test
public void getNameTest() {
// Arrange
Customer customerMock = Mockito.mock(Customer.class);
Mockito.when(...).thenReturn(...);
// Act
Optional<String> name = Utility.getName(customerMock);
// Assert
Assert.assertTrue(...);
}
}
সমস্যাটা কি ?
টেস্টগুলি স্থানীয়ভাবে সফলভাবে চালানো হয়, ইন্টেলিজজের অভ্যন্তরে, তারা জেনকিন্সের উপর ব্যর্থ হয় (যখন আমি আমার কোডটি দূরবর্তী শাখায় ঠেলে দিই, তখন একটি বিল্ড ট্রিগার করা হয় এবং ইউনিট পরীক্ষা শেষে চালিত হয়)। ত্রুটির বার্তাটি নিম্নলিখিতগুলির মতো:
org.mockito.exception.base.MockitoEception: ম্যাক / স্পাই ক্লাস com.packagename.Customer মকিতো উপহাস / স্পাই করতে পারেন না কারণ: - চূড়ান্ত শ্রেণি
আমি কি চেষ্টা করেছি?
আমি সমাধানটি খুঁজতে কিছুটা অনুসন্ধান করেছি, তবে আমি এটি তৈরি করি নি। আমি এখানে লক্ষ্য করুন যে আমি না আসলে পরিবর্তন করার জন্য মঞ্জুরিপ্রাপ্ত Customerএকটি হল চূড়ান্ত বর্গ। এগুলি ছাড়াও, আমি যদি এটির নকশাটি একেবারে পরিবর্তন না করা সম্ভব হয় (যেমন, একটি ইন্টারফেস তৈরি করা, আমি যে পদ্ধতিগুলিকে উপহাস করতে চাই এবং এটি গ্রাহক শ্রেণি সেই ইন্টারফেস প্রয়োগ করে, তা জোসে সঠিকভাবে উল্লেখ করেছিলেন যে মন্তব্য)। আমি যে জিনিসটি চেষ্টা করেছি সেটি হ'ল মকিতো-ফাইনালে উল্লিখিত দ্বিতীয় বিকল্প । এই সমস্যাটি স্থির করে নিলেও, এটি আরও কিছু ইউনিট পরীক্ষা করেছে :(, এটি কোনওটি আপাত উপায়ে স্থির করা যায় না।
প্রশ্নাবলি
সুতরাং আমার কাছে দুটি প্রশ্ন এখানে রয়েছে:
- কিভাবে প্রথম স্থানে এটি সম্ভব? স্থানীয় এবং জেনকিন্স উভয়ই পরীক্ষা ব্যর্থ হওয়া উচিত নয়?
- আমি উপরে উল্লিখিত সীমাবদ্ধতার ভিত্তিতে এটি কীভাবে ঠিক করা যায়?
কোনো সাহায্যের জন্য আগাম ধন্যবাদ।
Customerএটা কোনো যুক্তি থাকে, অথবা এটি শুধু একটি মূক ডেটা ক্লাস হয়? যদি এটি গ্রাহক এবং সেটটার সহ কেবল ক্ষেত্রের একগুচ্ছ হয়, তবে আপনি কেবল এটি ইনস্ট্যানিয়েট করতে পারেন।
enable finalহ'ল কনফিগারেশনটি আপনার ওয়ার্কস্পেসে কাজ করে, তবে যখন চালানো হয় তখনJenkinsএই ফাইলটি খুঁজে পাওয়া যায় না।Jenkinsফাইলটি কোথায় সন্ধান করছে এবং এটি সেখানে রয়েছে কিনা তা যাচাই করুন।