Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 11.11.2019
Сообщений: 78

Юнит тесты

24.12.2020, 20:47. Показов 1569. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется программа с графическим редактором. Программа позволяет создавать вершины, соединять их дорогами и считать кратчайший путь. Прикрепляю кусочек кода. Я в юнит тестах полный 0, но требуют обязательно. Сам код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
        
        public StepInfo Step()
        {
            if (this.queue.Count > 0)
            {
                /// Берем новую вершину, если с текущей уже все обошли
                if (lastVisitedVertex == this.vertexCount)
                {                    
                    currentVertex = this.GetNextVertex();
                }
 
 
 
                /// Проверяем текущую вершину
                if (this.G[currentVertex, lastVisitedVertex] < 0.0)
                    throw new ArgumentException("Граф содержит отрицательные дуги!");
 
                if (this.G[currentVertex, lastVisitedVertex] > 0.0 && this.dist[lastVisitedVertex] > this.dist[currentVertex] + this.G[currentVertex, lastVisitedVertex])
                {
                    this.dist[lastVisitedVertex] = this.dist[currentVertex] + G[currentVertex, lastVisitedVertex];
                    this.path[lastVisitedVertex] = currentVertex;
                }
 
                /// Создаем структуру, в которой будем хранить информацию о текущем шаге
                StepInfo stepInfo = new StepInfo()
                {
                    From = currentVertex,
                    To = lastVisitedVertex,
                    Dist = new double[this.dist.Length]
                };
 
                /// Копируем текущее состояние путей в историю шага
                Array.Copy(dist, stepInfo.Dist, this.dist.Length);               
 
                /// Переходим к следующей вершине                                
                lastVisitedVertex++;
 
                /// Возвращаем информацию о текущем шаге
                return stepInfo;
            }
 
            return new StepInfo()
            {
                From = -1,
                To = -1,
                Dist = new double[dist.Length]
            };
           
        }
    }
}
Вот приблизительный тест, который я хотел реализовать, но не вышло:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
 
namespace Step1
{
    [TestClass]
    public class Step1Test
    {
        [TestMethod]
        public void Doroga_20and40_60returned()
        {
            //arrange
            int x = 20;
 
            int y = 40;
 
            int expected = 60;
 
            //act
            Step1Test c = new Step1Test();
 
            int actual = c.Sum(x, y);
 
            //assert
            Assert.AreEqual(expected, actual);
        }
    }
}
Прошу помощи - подсказки или хотя бы похожий тест. Может даже самый простенький материал по тестам.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2020, 20:47
Ответы с готовыми решениями:

Как пишутся юнит тесты для методов, где фигурируют entity с множеством связей?
у меня есть метод , который принимает условный entity PaymentTransaction , а в нем есть связывающие entities , а у тех еще свои и так...

Юнит тестирование методов, работающих с файлами
Всем доброго времени суток! Возникла у меня небольшая проблема с тестированием методов, которые выполняют сериализацию объекта в XML, JSON....

Что такое юнит тестирование? Как им пользоваться?
Народ можете, кто-нибудь на просто примере показать, как тестировать какой-либо функционал в WinForms или WPF проекте? Чтобы было понятно в...

3
1 / 1 / 0
Регистрация: 02.06.2020
Сообщений: 5
24.12.2020, 20:58
Так в юнит тесте обычно тестируется внешняя функция: ты ей даёшь параметры и сравниваешь с высчитанным тобой результатом полученный от неё результат, насколько я знаю. А тут ты вызываешь функцию из самого теста, а не тестируемую. А самый простенький гайд по юнит тестам на сайте майкрософта
0
1 / 1 / 0
Регистрация: 11.11.2019
Сообщений: 78
25.12.2020, 13:29  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ProgLineal;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ProgLineal.Tests
{
    [TestClass()]
    public class DijkstraTests
    {
        [TestMethod()]
        public void StepTest()
        {
            //arrange
            int x = 20;
 
            int y = 40;
 
            int expected = 60;
 
            //StepTest c = new StepTest();
 
            int actual = ...
 
            Assert.AreEqual(expected, actual);
        }
    }
}
Что именно мне нужно написать в actual, чтобы получить сумму 20 и 40? И нужно ли писать StepTest c = new StepTest(); или там что-то другое должно быть?

Добавлено через 10 минут
Хотел проверить именно этот кусочек:

C#
1
2
3
4
                {
                    this.dist[lastVisitedVertex] = this.dist[currentVertex] + G[currentVertex, lastVisitedVertex];
                    this.path[lastVisitedVertex] = currentVertex;
                }
0
1 / 1 / 0
Регистрация: 02.06.2020
Сообщений: 5
25.12.2020, 13:54
Я думаю, вынести в отдельную функцию этот кусок кода, хотя точно не знаю, корректно ли тестировать кусок функции, ведь модульный тест - тест модуля - функции и т.д. Вот в docs.microsoft написано: "Модульный тест позволяет проверить отдельные программные компоненты или методы, также именуемые "единицей работы"", поэтому возможно необходимо разделить метод на несколько меньше, но, повторюсь, я не очень опытен в тестировании и могу ошибаться
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2020, 13:54
Помогаю со студенческими работами здесь

Нужно прислать обратно архив с уже сделанными юнит тестами
Доброго времени суток, господа! Помогите, пожалуйста, написать пару юнит тестов для моего проекта. Т к там тыркать много, было бы...

Тесты для фабрик
Добрый день, помогите разобраться с тестами. Вот код: AgeFilter.cs using System; using System.Collections.Generic; using...

Создать модульные тесты VS
Привет. Мне нужна ваша помощь. Имеется код, для которого нужно создать два теста (примеры приложил). До этого момента, модульные тесты не...

Модульные тесты, модифицировать код
Что нужно добавить вручную в тест LoadFromFile, чтобы тест работал правильно. Принцип теста должен быть таким: (тест который проверяет что,...

Виртуальные методы и юнит-тесты
В C# пришел недавно из Java, где все методы виртуальные. И сразу столкнулся с тем, что в C# по умолчанию методы невиртуальные, более того,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru