Table des matières:

Pouvez-vous tester des méthodes statiques unitaires ?
Pouvez-vous tester des méthodes statiques unitaires ?

Vidéo: Pouvez-vous tester des méthodes statiques unitaires ?

Vidéo: Pouvez-vous tester des méthodes statiques unitaires ?
Vidéo: À quoi servent les tests unitaires ? 2024, Avril
Anonim

À test unitaire vous besoin de prendre un petit morceau de ton code, recâbler ses dépendances et test cela de manière isolée. C'est dur avec méthodes statiques , non seulement dans le cas où ils accèdent à l'état global mais même si ils appellent juste les autres méthodes statiques.

Compte tenu de cela, comment testez-vous les méthodes statiques ?

Il existe quatre étapes simples pour configurer un test qui se moque d'un appel statique:

  1. Utilisez le coureur PowerMock JUnit: @RunWith(PowerMockRunner.
  2. Déclarez la classe de test dont nous nous moquons:
  3. Dites à PowerMock le nom de la classe qui contient les méthodes statiques:
  4. Configurez les attentes, en indiquant à PowerMock de s'attendre à un appel à une méthode statique:

De même, peut-on se moquer des méthodes statiques C# ? 4 réponses. Moq (et autres basés sur DynamicProxy railleur cadres) sont incapables de moquer tout ce qui n'est pas virtuel ou abstrait méthode . Alternativement, vous pourriez refactorisez votre conception pour abstraire les appels à méthodes statiques , et fournissez cette abstraction à votre classe via l'injection de dépendances.

À cet égard, comment testez-vous des méthodes privées ?

Test de l'unité uniquement l'API publiquement disponible. Lors de l'écriture tests unitaires , imitent le comportement des clients du SUT. Ne pas tester les méthodes privées . Soit Test de l'unité indirectement, en utilisant l'API publique, ou les extraire dans des classes séparées et test ces classes à la place.

Qu'est-ce qu'une méthode statique ?

A Java, un méthode statique est un méthode qui appartient à une classe plutôt qu'à une instance d'une classe. Les méthode est accessible à chaque instance d'une classe, mais méthodes définis dans une instance ne sont accessibles que par ce membre d'une classe.

Conseillé: