2016-07-21 17 views
0

Ich bin neu in C#. Ich habe etwas Erfahrung, die Javascript prüft. Ich habe versucht, diesen Test zu bewerten, ähnlich wie die Suche nach einer Methode, die mit einem Spion via Sinon aufgerufen wird.Testen Sie Schnittstellen in C# private Methoden

Ich bin jedoch nicht wirklich sicher, was ich testen soll. Wie ich festgestellt habe, bin ich ziemlich neu in C# und teste gerade, um ein Gefühl dafür zu bekommen, wie der Code funktioniert.

Hier ist die private Methode, die ich für

private TicketResponse.PaymentType GetPaymentType(TicketResponse.FormOfPaymentCreditCard paymentType, VCR_DisplayRSTicketingInfosTicketingInfoTicketingTicketDataTourInfo tourInfo) 
    { 

ich gelesen zu testen, damit ich die Schnittstellen testen. Also teste ich etwas in dieser Richtung?

public enum PaymentType 
{ 
    CASH, CREDIT_CARD, NITP, TRAVEL_CREDIT, GIFT_CARD, JETBLUE_REWARDS, NONE, CHECK, EXCHANGE 
} 

Jeder Einblick wäre sehr hilfreich, danke.

+1

Der allgemeine Konsens besteht darin, dass Ihre Unit-Tests die öffentlichen Methoden für erwartetes Verhalten testen sollten; Die zugehörigen privaten Methoden werden mit den öffentlichen Methoden getestet. –

+0

Hier ist ein Update zu meiner Frage. http://stackoverflow.com/questions/38514315/what-to-test-for-in-private-methods-on-c. – Winnemucca

Antwort

2

Die übliche Testmethode besteht darin, nur die öffentlichen Schnittstellen zu Ihrer Klasse zu testen. Das Testen der privaten Methoden erzeugt normalerweise brüchige Tests und testet nicht unbedingt die öffentlichen Endpunkte, die andere Clientklassen verwenden.

Wenn Sie nur die öffentliche Schnittstelle testen, können Sie die Details/Implementierung (in den privaten Methoden) einfacher ändern, ohne die Tests zu unterbrechen.

+0

Ok das macht mehr Sinn. Ich dachte an einen Spion für C#, um zu sehen, ob die Methode aufgerufen wurde. Ich werde meine Frage weiter aktualisieren. Ich habe noch ein paar Fragen in Bezug auf die öffentliche Schnittstelle. Danke – Winnemucca

+0

@stevek Wenn Sie andere Fragen haben, würde ich eine neue Frage beginnen, da dies als ein Duplikat markiert wurde. – Oleksi

+0

Ok ich habe es hierher verschoben. http://stackoverflow.com/questions/38514315/what-to-test-for-in-private-methods-on-c – Winnemucca

0

Sie können eine private Methode nicht testen, da sie außerhalb der Klasse, in der sie definiert ist, nicht sichtbar ist.

Wenn Sie möchten, dass Ihre Methode testbar ist, muss sie öffentlich sein oder einen öffentlichen Wrapper haben.

Private Methoden werden normalerweise indirekt über Tests auf die öffentlichen Methoden getestet, die sie aufrufen.