3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
1

Модульный тест для класса

25.03.2013, 17:18. Показов 4883. Ответов 13
Метки нет (Все метки)

Имеется класс сокращающий дробь
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
 
namespace dip2
{
    class Drob
    {
        static void Main(string[] args)
        {
            Drob prost_drob = new Drob(2, -4);
            prost_drob.reduce();
            Console.WriteLine(prost_drob.a + "/" + prost_drob.b);
            Console.ReadLine();
        }
 
        public int a = 0;
        public int b = 0;
 
        public Drob(int a, int b)
        {
            this.a = a;
            this.b = b;
        }
 
        private int llabs(int a)// метод, возвращающий модуль числа
        {
            return a < 0 ? -a : a;
        }
 
        private int gcd(int a, int b)// метод, возвращающий нод двух чисел
        {
            return b != 0 ? gcd(b, a % b) : a;
        }
 
        public void reduce()// метод, сокращающий дробь
        {
            int gc = gcd(llabs(this.a), llabs(this.b));
            this.a /= gc;
            this.b /= gc;
            if (a < 0 && b < 0) { a = -a; b = -b; }
            if (b < 0) { a = -a; b = -b; }
        }
    }
}
Ошибка в модульном тесте к этому классу:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
 
namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
        int a = 3;
        int b = -9;
        int[] expected = { -1, 3 };
        int[] actual = reduce.Drob(a, b);
        Assert.AreEqual(expected, actual);
       
        }
    }
}
Ошибка 1 Имя "reduce" отсутствует в текущем контексте
В чем проблема? Ссылку в текстовом проекте на проект с классом сделал..
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2013, 17:18
Ответы с готовыми решениями:

Модульный тест для хэш-таблицы падает с ArgumentOutOfRangeException
В общем, написал хэш таблицу на C# и столкнулся с тем, что не могу никак провести этот тест....

Сделать модульный тест по приведённому коду
имеется код,нужно сделать по нему модульные тесты .Пробовала с помощью автоматической генерации...

Создать модульный тест чтобы он проверял открытие файла
Добрый день форумчане дали задание на создание модульного теста поставили условие чтобы он проверял...

Создать модульный тест, который проверяет действительно ли экранируются все строки
Есть метод, который экранирует строки, если там встречается &quot;;&quot; public static Stream Write(string...

13
542 / 543 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
25.03.2013, 17:38 2
Попробуйте дописать в тесте using dip2;
или using dip2.Drob;
1
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
26.03.2013, 08:17  [ТС] 3
Переписал маленько
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using dip2;
 
namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            int a = 3;
            int b = -9;
            Drob prost_drob = new Drob(3, -9);
            prost_drob.reduce();
            Assert.AreEqual("-1/3", prost_drob, "Fail");
       
        }
    }
}
еще больше ошибок
Ошибка 4 "dip2.Drob" не содержит определение для "reduce". Не удалось найти метод расширения "reduce", принимающий первый аргумент типа "dip2.Drob" (пропущена директива using или ссылка на сборку?) c:\documents\visual studio 2012\Projects\dip2\UnitTestProject1\UnitTest1.cs 16
Ошибка 1 "dip2.Drob" недоступен в силу его уровня защиты c:\documents\visual studio 2012\Projects\dip2\UnitTestProject1\UnitTest1.cs 15
Ошибка 3 "dip2.Drob" недоступен в силу его уровня защиты c:\documents\visual studio 2012\Projects\dip2\UnitTestProject1\UnitTest1.cs 15
Ошибка 2 dip2.Drob не содержит конструктор, который принимает 2 аргументов c:\documents\visual studio 2012\Projects\dip2\UnitTestProject1\UnitTest1.cs 15

Добавлено через 14 часов 26 минут
что никто не знает что ли? в чем проблема хоть тогда? в самом коде теста или я не подключил правильно класс?
0
1135 / 938 / 240
Регистрация: 15.06.2012
Сообщений: 3,654
Записей в блоге: 1
26.03.2013, 08:27 4
public class Drob
1
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
26.03.2013, 08:52  [ТС] 5
Wolfdp, спасибо) тест запускается но не проходит... ошибка в синтаксисе ассерта..
0
1135 / 938 / 240
Регистрация: 15.06.2012
Сообщений: 3,654
Записей в блоге: 1
26.03.2013, 09:59 6
Цитата Сообщение от Ser_Aguero Посмотреть сообщение
ошибка в синтаксисе ассерта..
Значит нужно смотреть этот класс.
0
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
26.03.2013, 10:37  [ТС] 7
да это понятно.. из класса ассерт использую метод AreEqual<T>(T, T, String), сравниваю два универсальных типа, по идее должен работать, но ругается... "-1/3" c типом drob не может сравнить
0
1135 / 938 / 240
Регистрация: 15.06.2012
Сообщений: 3,654
Записей в блоге: 1
26.03.2013, 10:45 8
Цитата Сообщение от Ser_Aguero Посмотреть сообщение
да это понятно.. из класса ассерт использую метод AreEqual<T>(T, T, String), сравниваю два универсальных типа, по идее должен работать, но ругается... "-1/3" c типом drob не может сравнить
У меня только чай, кофейной гущи нет.
0
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
26.03.2013, 10:46  [ТС] 9
ошибка в Assert.AreEqual.
Ожидается:<-1/3(System.String)>.
Фактически:<dip2.Drob(dip2.Drob)>. fail
0
1135 / 938 / 240
Регистрация: 15.06.2012
Сообщений: 3,654
Записей в блоге: 1
26.03.2013, 10:49 10
Цитата Сообщение от Ser_Aguero Посмотреть сообщение
Assert.AreEqual("-1/3", prost_drob, "Fail");
"-1/3" это string; prost_drob - Drob. Это как сравнивать букву и цифру.
0
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
26.03.2013, 10:52  [ТС] 11
Wolfdp, ну вот я и не понимаю как их привести в общему так сказать..
0
1135 / 938 / 240
Регистрация: 15.06.2012
Сообщений: 3,654
Записей в блоге: 1
26.03.2013, 10:57 12
Assert.AreEqual(new Drob(-1, 3), prost_drob, "Fail");

Добавлено через 1 минуту
и тут нужно будет либо перегрузить метод Equal для Drob, либо оператор сравнения ==
0
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
26.03.2013, 19:56  [ТС] 13
Цитата Сообщение от Wolfdp Посмотреть сообщение
Assert.AreEqual(new Drob(-1, 3), prost_drob, "Fail");

Добавлено через 1 минуту
и тут нужно будет либо перегрузить метод Equal для Drob, либо оператор сравнения ==
это как?(

Добавлено через 26 минут
что здесь тогда не так:
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
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using dip2;
 
namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            int a = 3;
            int b = -9;
 
            Drob prost_drob = new Drob(3,-9);
            Drob expected = new Drob(-1, 3);
            //prost_drob.reduce();
            Drob actual = prost_drob.reduce();
            Assert.AreEqual(expected, prost_drob);
 
        }
    }
}
Ошибка 1 Неявное преобразование типа "void" в "dip2.Drob" невозможно c:\documents\visual studio 2012\Projects\ConsoleApplication1\UnitTestProject1 \UnitTest1.cs 19 27 UnitTestProject1

Добавлено через 3 часа 3 минуты
почему здесь ошибка? все правильно же делаю
C#
1
2
3
4
5
6
7
public void TestMethod2()
        {
            int a =-3;
            int expected = 3;
            int actual = llabs(a);
            Assert.AreEqual(expected,actual);
        }
Ошибка Имя "llabs" отсутствует в текущем контексте c:\documents\visual studio 2012\Projects\ConsoleApplication1\UnitTestProject1 \UnitTest1.cs 27 26 UnitTestProject1

Добавлено через 5 часов 25 минут
Wolfdp, спасибо, разобрался)
0
31 / 17 / 5
Регистрация: 18.07.2013
Сообщений: 220
02.12.2014, 12:18 14
Вообще тесты пишутся для программы, а не наоборот. Правильное решение с точки зрения инкапсуляции будет добавить сборку с тестами как дружественную.
C#
1
2
//AssemblyInfo.cs
[assembly: InternalsVisibleTo("NameAssemblyTest")]
Теперь тестам будут доступны Internal классы
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2014, 12:18
Помогаю со студенческими работами здесь

Модульный тест. Калькулятор базовая версия
Помогите создать тест к: using System; using System.Collections.Generic; using System.Linq;...

Как написать модульный тест для функции main
имеется функция нахождения максимального из трех целых чисел int main() { int a, b, c, mx; ...

Нужно написать модульный тест для приложения Windows Form
Вот код приложения: namespace ARPS { public partial class Form1 : Form { ...

Тест (Тест->Создать тест.->Модульный тест.)
есть нечто подобное в билдере ? или вообще программа создающая тесты и на VS и на билдер и пр.? и с...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru