Wie teste ich private Methoden in Rust? Ich habe keine Informationen darüber gefunden. Es gibt auch keine Informationen in der Dokumentation.Wie prüfe ich private Methoden in Rust?
17
A
Antwort
20
Wenn Sie #[test]
verwenden, gibt es nichts Besonderes an privaten oder öffentlichen Methoden - Sie schreiben nur ganz normale Funktionen, die auf alles zugreifen können, auf das sie zugreifen können.
fn private_function() {
}
#[test]
fn test_private_function() {
private_function()
}
Externe Tests, wie tests/*.rs
und examples/*.rs
, wenn Sie Fracht verwenden, oder doc-Tests, erhalten keinen Zugriff auf private Mitglieder; noch sollten sie: solche Tests sind als öffentliche API-Tests konzipiert, die sich nicht mit Implementierungsdetails befassen.
Verwandte Themen
- 1. Öffentlich/Private Struktur in Rust
- 2. Private Methoden in Ruby
- 3. Wie prüfe ich in Android
- 4. F # Private statische Methoden
- 5. Verständnis private Methoden in Ruby
- 6. Private Methoden und Felder
- 7. Sollte ich private Methoden mit RSpec testen?
- 8. Wie prüfe ich Helfer in Rails?
- 9. Wie testen Sie private Methoden mit NUnit?
- 10. Method Interceptor auf private Methoden
- 11. Wie kann ich private Methoden mit DUnit testen?
- 12. Wann verwenden Sie private Methoden?
- 13. Prototyp für private Unter Methoden
- 14. Dart, Unit Test Private Methoden
- 15. Testen Sie Schnittstellen in C# private Methoden
- 16. Geschützte und private Methoden in Rails
- 17. Zugriff auf "Public" -Methoden von "Private" Methoden in JavaScript-Klasse
- 18. Sollte ich private Methoden in das UML-Klassendiagramm einbeziehen?
- 19. Private Methoden in einer Mootools-Klasse
- 20. Warum brauchen wir 'private' Methoden in Ruby
- 21. Warum platziert OpenJDK private Methoden in vtable?
- 22. Wie private Methoden in Controller in Grellen 2.2.4
- 23. Wie bekomme ich Feldnamen in Rust?
- 24. Wie benutze ich externe Kisten in Rust?
- 25. Wie importiere ich Makros in Rust?
- 26. Wie sortiere ich einen Vektor in Rust?
- 27. Wie lagere ich eine Schließung in Rust?
- 28. Wie mache ich Echtzeit-Programmierung in Rust?
- 29. Wann sollte ich öffentliche/private/statische Methoden verwenden?
- 30. Klarheit über Kodierungsstandards für private Methoden
Externe Tests sollten unbedingt den Zugriff auf private Teile erlauben, weil 1) Sie möglicherweise Zugriff auf private Teile benötigen, um alle Code-Pfade über die öffentliche API zuverlässig auszulösen. Zum Beispiel könnte es einen internen Schwellenwert geben, der bei Erreichen einen anderen Codepfad auslöst. Sie müssen möglicherweise auch eine Fehlerinjektion oder interne Details zum Auslösen von Kantenfällen verwenden. 2) Der Zugriff auf private Teile kann eine bessere Diagnose liefern, wenn Tests fehlschlagen - Sie können interne Informationen in eine Panic-Nachricht einfügen usw. – kralyk
Diagnose: Das ist, was 'std :: fmt :: Debug 'ist. Im Übrigen stehe ich zu meiner Position, dass externe Tests keinen Zugang zu privaten Details haben sollten. Externe Tests sind für die von Ihnen beschriebene Situation nicht geeignet - dafür gibt es interne Komponententests. –
'fmt :: Debug 'ist in einigen Situationen zu grobkörnig - zum Beispiel möchten Sie vielleicht keine Details über eine ganze riesige Datenstruktur drucken, wenn Sie nur nach einem bestimmten Bit sind. Ist es für interne Tests angemessen, auch einen realistischen Anwendungsfall der öffentlichen API einzurichten? Wenn nicht, wird das nicht funktionieren, da ich genau das tun muss. Wenn ja, dann bin ich zufrieden mit all dem und dem internen Test, obwohl die Unterscheidung zu diesem Zeitpunkt irgendwie pointless ist? Das Kernproblem ist, dass die Implementierungsdetails unabhängig davon, wie sehr Sie es versuchen, die Schnittstelle immer irgendwie beeinflussen, da ist kein Weg vorbei. – kralyk