• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Test jednostkowy

VPS Starter Arubacloud
0 głosów
218 wizyt
pytanie zadane 10 lutego 2020 w C# przez xFanti Obywatel (1,350 p.)

Hejka, może mi ktoś wytłumaczyć i pomóc w napisaniu testu jednostkowego do programu który przyjmuje tablicę i zwraca jej kwadrat wszystkich elementów

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



class Kwadrat
{
    public int[] metoda(int[] tablica)
    {

        int x = tablica.Length;

        for (int i = 0; i < x; i++)
        {
            checked
            {
                tablica[i] = tablica[i] * tablica[i];
            }
            
            Console.WriteLine(tablica[i]);
        }

        return tablica;
    }
};




namespace Aplikacja
{
    class Program
    {
        static void Main(string[] args)
        {

            Kwadrat testMetoda = new Kwadrat();
            int[] tablica = { 1, 2, 3 };
            testMetoda.metoda(tablica);

        }
    }
}

 

2 odpowiedzi

+1 głos
odpowiedź 11 lutego 2020 przez Siemił Mądrala (7,380 p.)
wybrane 11 lutego 2020 przez xFanti
 
Najlepsza
Nie napiszę za ciebie ale postaram się cię naprowadzić.

W VS tworzysz projekt testów jednostkowych (klikasz prawym na solucję -> add -> new project -> Unit Test Project). Potem dodajesz referencję do projektu do którego chcesz napisać testy.

Aby korzystać z biblioteki MS z testami jednostkowymi musisz zaimportować przestrzeń nazw Microsoft.VisualStudio.TestTools.UnitTesting. Dzięki niej możesz korzystać z kilu rozszerzeń. Dwa najważniejsze to: [TestClass] -> oznacza klasę testową, [TestMethod] -> oznacza metodę testową jak zresztą można się domyśleć:).

Każda metoda testowa oznaczona jako [TestMethod] będzie widoczna w 'Test Explorerze', w menu 'View', skąd też mozna ją uruchomić.

To tyle jeśli chodzi o przygotowania. Teraz o samej metodzie. Każda metoda testów jednostkowych, aby zachować porządek, powinna składać się z trzech umownych sekcji: arrange act assert, . Zaczynasz od Arrange, która służy do przygotowania oraz ustawienia obiektów aby były gotowe do testu. Następnie Act w której to wykonujesz testowaną metodę i Assert w której tworzysz Assercję czyli sprawdzasz czy test przeszedł.

W twoim przypadku w Arrange stóż obiekt klasy Kwadrat oraz testową tablicę. W Act wykonaj metodę 'metoda' do której włożysz wcześniej stworzoną tablicę. A w assercji sprawdź czy spodziewany wynik jest równy tablicy która otrzymasz po wykonaniu metody 'metoda',

Pamiętaj że metody testów jednostkowch muszą być powtarzalne, za każdym razem zwracać ten sam wynik.

Dobrą praktyką jest dodać metody sprawdzające różne przypadki skrajne. Pomyśl jak twoja metoda by się zachowała gdybyś włożył pustą tablicę. Albo zamiast tablicy wrzucił nulla. Najlepiej jest jak metoda testowa ma jedną Assercję (sprawdzenie czy wynik jest oczekiwany).

Poczytaj też o nazywaniu metod testowych. Jest to temat rzeka.

Powodzenia.
komentarz 11 lutego 2020 przez xFanti Obywatel (1,350 p.)
Mógłbyś jeszcze napisać w jaki sposób dodaję się referencje do projektu?
1
komentarz 11 lutego 2020 przez xFanti Obywatel (1,350 p.)
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace TestJednostkowy
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            //Arange

            Kwadrat obiekt = new Kwadrat;
            int[] TestowaTablica = { 8, 2, 1 };

            //Act

            Kwadrat.metoda(TestowaTablica);

            // assert
            int[] Wynik = { 64, 4, 1 };
            Assert.AreEqual(Wynik, TestowaTablica );

        }
    }
}

To ma tak wyglądać?

komentarz 11 lutego 2020 przez Siemił Mądrala (7,380 p.)
'Wynik, to rezultat ktory spodziewasz sie dostac. Twoja metoda 'metoda' zwroci tablice. Przypisz ja do zmiennej ktora porownasz do tablicy Wynik.
komentarz 11 lutego 2020 przez xFanti Obywatel (1,350 p.)
Stworzyłem test jednostkowy, kliknąłem prawym na test -> dodaj-> referencje i wybrałem projekt. Mimo to podczas tworzenia obiektu klasy mam napisane że nie został znaleziony.
0 głosów
odpowiedź 29 lutego 2020 przez cSharpKazik Użytkownik (840 p.)

Jeżeli interesuje Cię temat testów jednostkowych i nie wiesz jak zacząć proponuję zacząć od zapozniania się z tym artykułem: Przykład Testu Jednostkowego w .NET Dla Początkujących

Znajdziesz tam, też inne ciekawe artykuły wprowadzające ogólnie w testy jednostkowe.

 

Podobne pytania

0 głosów
3 odpowiedzi 375 wizyt
pytanie zadane 25 października 2018 w Java przez blofeld Użytkownik (700 p.)
0 głosów
1 odpowiedź 214 wizyt
pytanie zadane 25 grudnia 2021 w JavaScript przez Olivier Mazur Użytkownik (680 p.)
0 głosów
1 odpowiedź 127 wizyt
pytanie zadane 7 marca 2022 w C# przez Nabuchadonozor Gaduła (3,120 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...