Μπορείτε να δοκιμάσετε στατικές μεθόδους μονάδας;
Μπορείτε να δοκιμάσετε στατικές μεθόδους μονάδας;

Προς το μονάδα δοκιμής σας πρέπει να πάρετε ένα μικρό κομμάτι τα δικα σου κώδικα, επανασυνδέστε τις εξαρτήσεις του και δοκιμή αυτό σε απομόνωση. Αυτό είναι δύσκολο με στατικές μέθοδοι , όχι μόνο στην περίπτωση που έχουν πρόσβαση σε παγκόσμιο κράτος αλλά ακόμη και αν απλά καλούν άλλους στατικές μέθοδοι.

Λαμβάνοντας υπόψη αυτό, πώς δοκιμάζετε στατικές μεθόδους;

Υπάρχουν τέσσερα εύκολα βήματα για τη ρύθμιση μιας δοκιμής που κοροϊδεύει μια στατική κλήση:

  1. Χρησιμοποιήστε το PowerMock JUnit runner: @RunWith(PowerMockRunner.
  2. Δηλώστε τη δοκιμαστική τάξη που κοροϊδεύουμε:
  3. Πείτε στο PowerMock το όνομα της κλάσης που περιέχει στατικές μεθόδους:
  4. Ρυθμίστε τις προσδοκίες, λέγοντας στο PowerMock να περιμένει μια κλήση σε μια στατική μέθοδο:

Ομοίως, μπορούμε να κοροϊδεύουμε τις στατικές μεθόδους C#; 4 Απαντήσεις. Moq (και άλλα που βασίζονται σε DynamicProxy διακωμώδηση πλαίσια) δεν μπορούν κοροϊδεύω οτιδήποτε δεν είναι εικονικό ή αφηρημένο μέθοδος . Εναλλακτικά, θα μπορούσες αναδιαμορφώστε το σχέδιό σας σε αφηρημένες κλήσεις στατικές μέθοδοι , και παρέχετε αυτήν την αφαίρεση στην τάξη σας μέσω της ένεσης εξάρτησης.

Σε σχέση με αυτό, πώς δοκιμάζετε τις ιδιωτικές μεθόδους μονάδας;

Δοκιμή μονάδας μόνο το δημόσια διαθέσιμο API. Όταν γράφετε δοκιμές μονάδας , μιμούνται τη συμπεριφορά των πελατών του SUT. Μην το κάνετε δοκιμή ιδιωτικών μεθόδων . Είτε δοκιμή μονάδας τα έμμεσα, χρησιμοποιώντας το δημόσιο API, ή να τα εξαγάγετε σε ξεχωριστές κλάσεις και δοκιμή αντί γι' αυτές τις τάξεις.

Τι είναι η στατική μέθοδος;

Στην Java, α στατική μέθοδος είναι ένα μέθοδος που ανήκει σε μια κλάση και όχι σε μια παρουσία μιας κλάσης. ο μέθοδος είναι προσβάσιμο σε κάθε περίπτωση μιας τάξης, αλλά μεθόδους που ορίζονται σε ένα στιγμιότυπο μπορούν να έχουν πρόσβαση μόνο από αυτό το μέλος μιας κλάσης.

Συνιστάται: