ΔΟΚΙΜΗ ΜΟΝΑΔΩΝ στο Asp.Net: Ολοκληρωμένο σεμινάριο
⚡ Έξυπνη Σύνοψη
Η δοκιμή μονάδας μιας εφαρμογής ASP.NET στο Visual Studio ξεκινά με ένα Έργο Δοκιμής Μονάδας, συνδέει μια αναφορά στο έργο-στόχο, προσθέτει τα χαρακτηριστικά MSTest [TestClass] και [TestMethod] και καλεί τις μεθόδους Assert για να αποδείξει ότι οι κλάσεις συμπεριφέρονται όπως έχουν σχεδιαστεί.
Η δοκιμή είναι μια ουσιαστική πτυχή οποιασδήποτε γλώσσας προγραμματισμού. Δοκιμές για εφαρμογές ASP.NET είναι δυνατή με τη βοήθεια του Visual Studio.
Το Visual Studio χρησιμοποιείται για τη δημιουργία κώδικα δοκιμών. Χρησιμοποιείται επίσης για την εκτέλεση του κώδικα δοκιμών για μια εφαρμογή ASP.NET. Με αυτόν τον τρόπο, γίνεται απλός ο έλεγχος για τυχόν σφάλματα σε μια εφαρμογή ASP.NET. Στο Visual Studio, η ενότητα δοκιμών διαθέτει μια λειτουργικότητα που είναι έτοιμη για χρήση. Κάποιος μπορεί να εκτελέσει αμέσως μια δοκιμή για ένα έργο ASP.NET.
Εισαγωγή στις δοκιμές για ASP.NET
Το πρώτο επίπεδο δοκιμής ενός έργου ASP.NET είναι η δοκιμή σε επίπεδο μονάδας. Αυτή η δοκιμή αφορά τη λειτουργικότητα μιας εφαρμογής. Η δοκιμή διεξάγεται για να διασφαλιστεί ότι η εφαρμογή συμπεριφέρεται όπως αναμένεται. Στο ASP.NET, η πρώτη εργασία είναι η δημιουργία ενός δοκιμαστικού έργου στο Visual Studio. Το δοκιμαστικό έργο θα περιέχει τον απαραίτητο κώδικα για τη δοκιμή της εφαρμογής.
Ας εξετάσουμε την παρακάτω ιστοσελίδα. Στη σελίδα, έχουμε το μήνυμα "Guru99 – ASP.NET” εμφανίζεται. Τώρα, πώς μπορούμε να επιβεβαιώσουμε ότι εμφανίζεται το σωστό μήνυμα όταν εκτελείται ένα έργο ASP.NET; Αυτό γίνεται προσθέτοντας ένα δοκιμαστικό έργο στη λύση ASP.NET (που χρησιμοποιείται για την ανάπτυξη εφαρμογών που βασίζονται στο web). Αυτό το δοκιμαστικό έργο θα διασφαλίσει ότι το σωστό μήνυμα εμφανίζεται στον χρήστη.
Ας εξετάσουμε τώρα περισσότερες λεπτομέρειες και ας δούμε πώς μπορούμε να εργαστούμε σε δοκιμές σε ASP.NET.
Δημιουργία ενός .NET Unit Testing Project
Πριν δημιουργήσουμε ένα δοκιμαστικό έργο, πρέπει να εκτελέσουμε τα παρακάτω βήματα υψηλού επιπέδου.
- Χρησιμοποιήστε την «Εφαρμογή επίδειξης» που χρησιμοποιήθηκε στις προηγούμενες ενότητες. Αυτή θα είναι η εφαρμογή μας που πρέπει να δοκιμαστεί.
- Θα προσθέσουμε μια νέα κλάση στην εφαρμογή DemoApplication. Αυτή η κλάση θα περιέχει μια συμβολοσειρά με όνομα 'Guru99 – ASP.NET.' Αυτή η συμβολοσειρά θα δοκιμαστεί στο έργο δοκιμών μας.
- Τέλος, θα δημιουργήσουμε ένα έργο δοκιμών. Αυτό θα χρησιμοποιηθεί για τη δοκιμή της εφαρμογής ASP.NET.
Ας ακολουθήσουμε λοιπόν τα παραπάνω βήματα υψηλού επιπέδου και ας δούμε πώς να εφαρμόσουμε τις δοκιμές.
Βήμα 1) Βεβαιωθείτε ότι η εφαρμογή επίδειξης είναι ανοιχτή στο Visual Studio.
Βήμα 2) Ας προσθέσουμε τώρα μια νέα κλάση στην εφαρμογή DemoApplication. Αυτή η κλάση θα περιέχει μια συμβολοσειρά με όνομα 'Guru99 – ASP.NET.' Αυτή η συμβολοσειρά θα δοκιμαστεί στο έργο δοκιμών μας.
Ακολουθήστε το παρακάτω βήμα για να προσθέσετε μια νέα τάξη.
- Στο Visual Studio, κάντε δεξί κλικ στο 'DemoApplication' στην Εξερεύνηση λύσεων.
- Επιλέξτε την επιλογή Προσθήκη->Τάξη από το μενού περιβάλλοντος.
Βήμα 3) Στο στάδιο αυτό,
- Δώστε ένα όνομα "Tutorial.cs" για τη νέα τάξη.
- Κάντε κλικ στο κουμπί «Προσθήκη» για να προσθέσετε το αρχείο στην εφαρμογή επίδειξης.
Τώρα, μια νέα κλάση προστίθεται στο αρχείο "DemoApplication".
Βήμα 4) Ανοίξτε το νέο αρχείο Tutorial.cs από το “DemoApplication”. Προσθέστε τη συμβολοσειρά “Guru99 – ASP.NET.
Για να ανοίξετε το αρχείο, κάντε διπλό κλικ στο αρχείο Tutorial.cs στην Εξερεύνηση λύσεων.
Το αρχείο θα έχει ήδη γραμμένο προεπιλεγμένο κώδικα. Μην ανησυχείτε για αυτόν τον κωδικό, απλώς προσθέστε την παρακάτω γραμμή κώδικα.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Εξήγηση:-
- Η μεταβλητή Name είναι τύπου string.
- Τέλος, στον κατασκευαστή της κλάσης Tutorial, αντιστοιχίστε την τιμή της μεταβλητής Name. Η τιμή αντιστοιχίζεται σε "Guru99 – ASP.NET
Βήμα 5) Τώρα μεταβείτε στο αρχείο demo.aspx και προσθέστε τις γραμμές κώδικα για να εμφανίσετε το κείμενο "Guru99 – ASP.NET.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <% DemoApplication.Tutorial tp=new DemoApplication.Tutorial();%> <%=tp.Name%> </div> </form> </body> </html>
Code Εξήγηση:-
- Η πρώτη γραμμή δημιουργεί ένα αντικείμενο της κλάσης 'Tutorial'. Αυτό είναι το πρώτο βήμα κατά την εργασία με κλάσεις και αντικείμενα. Το όνομα που δίνεται στο αντικείμενο είναι 'tp'.
- Τέλος ονομάζουμε "tutorial.cs" από το αρχείο demo.aspx. Εμφανίζει την τιμή της μεταβλητής Name.
Όταν εκτελείτε το παραπάνω πρόγραμμα στο Visual Studio, θα λάβετε την ακόλουθη έξοδο.
Παραγωγή:-
Από την έξοδο, βλέπετε το μήνυμα "GuruΕμφανίζεται η ένδειξη 99 – ASP.NET".
Βήμα 6) Τώρα ας προσθέσουμε το δοκιμαστικό μας έργο στην εφαρμογή επίδειξης. Αυτό γίνεται με τη βοήθεια του Visual Studio.
- Κάντε δεξί κλικ στο Solution – DemoApplication.
- Στο μενού περιβάλλοντος, επιλέξτε την επιλογή «Νέο έργο».
Βήμα 7) Το βήμα περιλαμβάνει την προσθήκη του έργου Unit Test στην εφαρμογή επίδειξης.
- Κάντε κλικ στον τύπο του στοιχείου ως «Δοκιμή» από το αριστερό πλαίσιο.
- Επιλέξτε το στοιχείο ως «Έργο δοκιμής μονάδας» από τη λίστα, η οποία εμφανίζεται στο κεντρικό τμήμα του πλαισίου διαλόγου.
- Δώστε ένα όνομα για το δοκιμαστικό έργο. Στην περίπτωσή μας, το όνομα που δίνεται είναι «DemoTest».
- Τέλος, κάντε κλικ στο κουμπί «OK».
Θα δείτε τελικά το έργο DemoTest να προστίθεται στον εξερευνητή λύσεων. Με αυτό, μπορείτε επίσης να δείτε άλλα αρχεία όπως UnitTest1.cs, ιδιότητες κ.λπ. να δημιουργούνται από προεπιλογή.
Εκτέλεση του Test Project
Το δοκιμαστικό έργο που δημιουργήθηκε στην προηγούμενη ενότητα χρησιμοποιείται για τη δοκιμή της εφαρμογής ASP.NET. Στα επόμενα βήματα, θα δούμε πώς να εκτελέσετε το δοκιμαστικό έργο.
- Το πρώτο βήμα θα ήταν να προσθέσετε μια αναφορά στο έργο ASP.NET. Αυτό το βήμα εκτελείται έτσι ώστε το δοκιμαστικό έργο να έχει πρόσβαση στο έργο ASP.NET.
- Στη συνέχεια θα γράψουμε τον κωδικό δοκιμής μας.
- Τέλος, θα εκτελέσουμε τη δοκιμή χρησιμοποιώντας το Visual Studio.
Βήμα 1) Για να δοκιμάσετε την Επίδειξη Εφαρμογή μας, το πρώτο δοκιμαστικό έργο πρέπει να αναφέρεται στην Εφαρμογή Επίδειξης. Προσθέστε μια αναφορά στη λύση Demo.aspx.
- Κάντε δεξί κλικ στο έργο Demo Test
- Από το μενού επιλέξτε Προσθήκη->Αναφορά.
Βήμα 2) Το επόμενο βήμα είναι να προσθέσετε μια αναφορά στην DemoApplication.
- Επιλέξτε την επιλογή Έργα από την αριστερή πλευρά του πλαισίου διαλόγου
- Κάντε κλικ στο πλαίσιο ελέγχου δίπλα στο DemoApplication
- Κάντε κλικ στο κουμπί «ΟΚ».
Αυτό θα επιτρέψει σε ένα έργο demotest να δοκιμάσει την DemoApplication μας.
Βήμα 3) Τώρα είναι η ώρα να προσθέσουμε τον κώδικα δοκιμής στο έργο δοκιμής μας.
- Για αυτό το πρώτο διπλό κλικ στο αρχείο UnitTest1 (το αρχείο UnitTest1 προστίθεται αυτόματα από το Visual Studio όταν δημιουργείται το έργο δοκιμής) στην Εξερεύνηση λύσεων.
- Αυτό είναι το αρχείο που θα εκτελεστεί για να δοκιμαστεί το έργο ASP.NET.
Θα δείτε τον παρακάτω κώδικα που προστέθηκε από το Visual Studio στο αρχείο UnitTest1.cs. Αυτός είναι ο βασικός κωδικός που απαιτείται για την εκτέλεση του δοκιμαστικού έργου.
Βήμα 4) Το επόμενο βήμα είναι να προσθέσετε τον κώδικα που χρησιμοποιείται για να ελέγξετε τη συμβολοσειρά "Guru99 – ASP.NET.
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using DemoApplication; namespace DemoTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Tutorial tp = new Tutorial(); Assert.AreEqual(tp.Name,"Guru99 - ASP.Net"); } } }
- Δημιουργήστε ένα νέο αντικείμενο με το όνομα 'tp' του τύπου Tutorial
- Η μέθοδος Assert.AreEqual χρησιμοποιείται στο .NET για να ελέγξει αν μια τιμή είναι ίση με κάτι. Έτσι, στην περίπτωσή μας, συγκρίνουμε τις τιμές του tp.Name με Guru99 – ASP.NET.
Βήμα 5) Τώρα ας εκτελέσουμε το δοκιμαστικό μας έργο. Για αυτό, πρέπει να πάμε στην επιλογή μενού Test->Run->All Tests (Δοκιμή->Εκτέλεση->Όλες οι δοκιμές).
Παραγωγή:-
Ένα δοκιμαστικό παράθυρο του Explorer θα εμφανιστεί στο Visual Studio. Αυτό θα εμφανίσει το παραπάνω αποτέλεσμα και θα εμφανίσει ότι μια επιτυχής δοκιμή εκτελέστηκε στο Visual Studio.
Χαρακτηριστικά και ισχυρισμοί MSTest που θα χρησιμοποιήσετε
The MicrosoftΟ χώρος ονομάτων .VisualStudio.TestTools.UnitTesting παρέχει ένα μικρό σύνολο χαρακτηριστικών και ισχυρισμών που καλύπτουν τις περισσότερες δοκιμές μονάδων ASP.NET. Η εκμάθησή τους πρώτα καθιστά κάθε επόμενη δοκιμή ευκολότερη στην ανάγνωση και τη συντήρηση.
- [Κλάση Δοκιμής] – σηματοδοτεί την κλάση ως ένα κοντέινερ δοκιμών. Το MSTest σαρώνει κλάσεις με αυτό το χαρακτηριστικό κατά τη στιγμή της ανακάλυψης.
- [Μέθοδος δοκιμής] – επισημαίνει μια δημόσια, χωρίς παραμέτρους μέθοδο ως μεμονωμένη δοκιμή. Η μέθοδος επιστρέφει void, Task ή ValueTask.
- [TestInitialize] / [TestCleanup] – εκτέλεση πριν και μετά από κάθε μέθοδο δοκιμής. Χρησιμοποιήστε τα για να δημιουργήσετε και να απορρίψετε κοινόχρηστη ρύθμιση, όπως ένα mock repository ή ένα in-memory context.
- [Αρχικοποίηση Κλάσης] / [Καθαρισμός Κλάσης] – εκτελούνται μία φορά για ολόκληρη την κλάση. Είναι χρήσιμα όταν η εγκατάσταση είναι δαπανηρή, για παράδειγμα η δημιουργία μιας βάσης δεδομένων δοκιμών.
- [DataRow] και [DataTestMethod] – παροχή παραμετροποιημένων εισόδων, έτσι ώστε μια ενιαία μέθοδος δοκιμής να καλύπτει πολλές περιπτώσεις.
Μέσα σε κάθε μέθοδο δοκιμής, η κλάση Assert ελέγχει το αποτέλεσμα. Συνήθεις κλήσεις περιλαμβάνουν τις Assert.AreEqual για συγκρίσεις τιμών, τις Assert.IsTrue και Assert.IsFalse για λογικές τιμές, τις Assert.IsNull και Assert.IsNotNull για αναφορές και τις Assert.ThrowsException για αναμενόμενες εξαιρέσεις. Δομήστε κάθε δοκιμή χρησιμοποιώντας το μοτίβο Arrange, Act, Assert, έτσι ώστε η ρύθμιση, η κλήση και η επαλήθευση να παραμένουν οπτικά διαχωρισμένες. Αυτή η διάταξη διατηρεί την εύκολη εντοπισμό σφαλμάτων στις αποτυχημένες δοκιμές, επειδή η γραμμή που αποτυγχάνει είναι σχεδόν πάντα το μοναδικό Assert στο κάτω μέρος.
Σύγκριση MSTest, NUnit και xUnit για ASP.NET
Τρία πλαίσια δοκιμών κυριαρχούν στο οικοσύστημα .NET. Κάθε ένα εκτελείται μέσα στο Visual Studio και ενσωματώνεται με το dotnet test, επομένως η διαφορά έγκειται κυρίως στο στυλ, την υποστήριξη της κοινότητας και την προεπιλεγμένη συμπεριφορά.
- MSTest – αποστέλλεται από Microsoft και έρχεται προεγκατεστημένο με το πρότυπο Έργου Δοκιμής Μονάδας του Visual Studio που χρησιμοποιήθηκε νωρίτερα σε αυτό το σεμινάριο. Είναι η ασφαλέστερη προεπιλογή όταν μια ομάδα είναι νέα στη δοκιμή μονάδων στο Microsoft σωρός.
- Μονάδα – το παλαιότερο από τα τρία, αρχικά μεταφερμένο από JUnitΠροσφέρει ένα πλούσιο μοντέλο περιορισμών, παραμετροποιημένες δοκιμές μέσω TestCase και TestCaseSource και ώριμη υποστήριξη σε κάθε έκδοση .NET.
- xUnit.net – χρησιμοποιείται εσωτερικά από τις ομάδες ASP.NET Core και Entity Framework Core. Αντικαθιστά τη μέθοδο SetUp με την constructor και την IDisposable, ενθαρρύνει μία κλάση δοκιμής ανά συμπεριφορά και χρησιμοποιεί τα [Fact] και [Theory] αντί για το [TestMethod].
Και τα τρία πλαίσια ανακαλύπτουν δοκιμές μέσω χαρακτηριστικών, εκτελούν την εντολή dotnet test και παράγουν αναφορές trx ή xUnit XML που χρησιμοποιούν αγωγοί CI όπως Azure DevOps, ενέργειες GitHub και Jenkins μπορεί να καταναλώσει άμεσα. Για ένα πρώτο έργο ASP.NET, η χρήση του MSTest διατηρεί την αλυσίδα εργαλείων απλή. Οι ομάδες που επιθυμούν πλουσιότερη παραμετροποίηση ή χρησιμοποιούν ήδη το ASP.NET Core συχνά επιλέγουν το xUnit για λόγους συνέπειας με το πλαίσιο με το οποίο κατασκευάστηκε.
καλυτερα Practices for Unit Testing Εφαρμογές ASP.NET
Η τήρηση ενός μικρού συνόλου συνηθειών διατηρεί μια σουίτα γρήγορη, αξιόπιστη και χρήσιμη καθ' όλη τη διάρκεια ζωής ενός έργου ASP.NET.
- Δοκιμάστε μία συμπεριφορά ανά μέθοδο. Ένα τεστ που βεβαιώνει πολλά άσχετα πράγματα αποτυγχάνει για πολλούς λόγους και χρειάζεται περισσότερο χρόνο για να διορθωθεί.
- Δοκιμές ονόματος μετά την πρόθεση. Ένα μοτίβο όπως το MethodUnderTest_Scenario_ExpectedResult κάνει την έξοδο του Test Explorer μια αναγνώσιμη προδιαγραφή της κλάσης.
- Απομονώστε τη μονάδα από εξωτερικά συστήματα. Τυλίξτε τις κλήσεις αρχείων, δικτύου και βάσης δεδομένων πίσω από διεπαφές και αντικαταστήστε τις ψεύτικες ή τις εικονικές, ώστε η δοκιμή να μην φτάσει στην πραγματική εξάρτηση.
- Κρατήστε τις εξετάσεις γρήγορες. Στόχος είναι η ολοκλήρωση ολόκληρης της σουίτας μονάδων σε δευτερόλεπτα. Οι αργές δοκιμές παραλείπονται και οι δοκιμές που παραλείπονται κρύβουν τις παλινδρομήσεις.
- Ακολουθήστε τη διάταξη Τακτοποίηση, Δράση, Διεκδίκηση. Τρία μικρά τετράγωνα με κενές γραμμές ανάμεσά τους υποδηλώνουν πρόθεση και διευκολύνουν τον εντοπισμό των γραμμών που αποτυγχάνουν.
- Εκτέλεση δοκιμών σε κάθε υποβολή. Συνδέστε τη δοκιμή dotnet σε έναν αγωγό CI, έτσι ώστε μια προβληματική δοκιμή να εμποδίζει τη συγχώνευση αντί να μεταφερθείping στην παραγωγή.
- Tracκάλυψη κώδικα k, αλλά μην το κυνηγάτε. Η κάλυψη αναδεικνύει μη δοκιμασμένες διαδρομές, αλλά ένας μεγάλος αριθμός από μόνος του δεν εγγυάται την ποιότητα. RevΔείτε τι κάνουν στην πραγματικότητα οι γραμμές που λείπουν.
Εφαρμογμένες μαζί, αυτές οι πρακτικές μετατρέπουν το έργο DemoTest που δημιουργήθηκε παραπάνω στον σπόρο μιας σουίτας που εντοπίζει τις παλινδρομήσεις σε κάθε ώθηση, καταγράφει τη συμπεριφορά για μελλοντικούς προγραμματιστές και παρέχει εμπιστοσύνη κατά την αναδιαμόρφωση μιας εφαρμογής ASP.NET.


















