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

Test jednostkowy

Object Storage Arubacloud
0 głosów
224 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 385 wizyt
pytanie zadane 25 października 2018 w Java przez blofeld Użytkownik (700 p.)
0 głosów
1 odpowiedź 221 wizyt
pytanie zadane 25 grudnia 2021 w JavaScript przez Olivier Mazur Użytkownik (680 p.)
0 głosów
1 odpowiedź 131 wizyt
pytanie zadane 7 marca 2022 w C# przez Nabuchadonozor Gaduła (3,120 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...