Სარჩევი:

შეგიძლიათ ერთეული გამოცდა სტატიკური მეთოდები?
შეგიძლიათ ერთეული გამოცდა სტატიკური მეთოდები?

ვიდეო: შეგიძლიათ ერთეული გამოცდა სტატიკური მეთოდები?

ვიდეო: შეგიძლიათ ერთეული გამოცდა სტატიკური მეთოდები?
ვიდეო: [QUESTION] Can we mock static methods in unit tests? 2024, ნოემბერი
Anonim

რომ ერთეული გაგსინჯავთ საჭიროა პატარა ნაწილის აღება შენი კოდი, გადააკეთე მისი დამოკიდებულებები და ტესტი ის იზოლირებულად. ეს რთულია სტატიკური მეთოდები , არა მხოლოდ იმ შემთხვევაში, თუ ისინი წვდებიან გლობალურ სახელმწიფოს, არამედ თუნდაც თუ ისინი უბრალოდ სხვას ეძახიან სტატიკური მეთოდები.

ამის გათვალისწინებით, როგორ ამოწმებთ სტატიკურ მეთოდებს?

არსებობს ოთხი მარტივი ნაბიჯი ტესტის დაყენებაში, რომელიც დასცინის სტატიკური ზარს:

  1. გამოიყენეთ PowerMock JUnit runner: @RunWith(PowerMockRunner.
  2. გამოაცხადეთ სატესტო კლასი, რომელსაც ჩვენ დავცინივართ:
  3. უთხარით PowerMock კლასის სახელს, რომელიც შეიცავს სტატიკურ მეთოდებს:
  4. დააყენეთ მოლოდინები, უთხარით PowerMock-ს, რომ მოელოდეს ზარს სტატიკურ მეთოდზე:

ანალოგიურად, შეგვიძლია დავცინოთ სტატიკური მეთოდები C#? 4 პასუხი. Moq (და სხვა DynamicProxy-ზე დაფუძნებული დამცინავი ჩარჩოები) არ შეუძლიათ დაცინვა ყველაფერი, რაც არ არის ვირტუალური ან აბსტრაქტული მეთოდი . Ალტერნატიულად, შეგეძლო გადააკეთეთ თქვენი დიზაინი აბსტრაქტულ ზარებზე სტატიკური მეთოდები და მიაწოდეთ ეს აბსტრაქცია თქვენს კლასს დამოკიდებულების ინექციის საშუალებით.

ამასთან დაკავშირებით, როგორ ამოწმებთ კერძო მეთოდებს?

ერთეულის ტესტი მხოლოდ საჯაროდ ხელმისაწვდომი API. წერისას ერთეული ტესტები , მიბაძეთ SUT-ის კლიენტების ქცევას. ნუ პირადი მეთოდების ტესტირება . ან ერთეულის ტესტი ისინი ირიბად, საჯარო API-ს გამოყენებით, ან ცალკე კლასებად ამოღება და ტესტი იმ კლასების ნაცვლად.

რა არის სტატიკური მეთოდი?

ჯავაში ა სტატიკური მეთოდი არის მეთოდი რომელიც ეკუთვნის კლასს და არა კლასის მაგალითს. The მეთოდი ხელმისაწვდომია კლასის ყველა ინსტანციისთვის, მაგრამ მეთოდები ინსტანციაში განსაზღვრული მხოლოდ კლასის ამ წევრს შეუძლია წვდომა.

გირჩევთ: