Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> NUnit: первые впечатления 
V
    Опции темы
Exception
  Дата 17.4.2006, 18:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Test-Driven Development в .NET
 

Значит, после долгих запарок с созданием консольных приложений для тестирования своих Class Library, я признал, что надо перебираться на что-то более удобное в работе. Выбрал я весьма распространённый среди дотнетчиков фреймворк – конечно же, NUnit. Спешу поделиться впечатлениями ;)

Где взять?

Вот он тут лежит.

Пишем класс

После закачки сетупа с вышеупомянутого сайта, я перезапустил студию и создал два новых проекта Class Library – один для VB, другой для C#.

Собственно, для добавления в проект поддержки NUnit необходимо (как нетрудно догадаться) добавить в проект референс на NUnit.Framework.dll. У меня эта библиотека лежала в Program Files\TestDriven.NET 2.0\NUnit. Также я добавил в проект глобальный импорт на пространство имён NUnit.Framework. Дальше я написал очень даже простенький класс, метод которого возвращает мне всякую фигню:

Код

Public Class SomeStuff

    Public Shared Function GiveMeSomeStuff() As String
        Return "Some stuff"
    End Function

End Class


Код

public static class SomeStuff
{
    public static string GiveMeSomeStuff()
    {
        return "Some stuff";
    }
}


Пишем тест-кейс

Несколько слов об устройстве NUnit. Сначала библиотека NUnit была полностью портирована с Java (JUnit), но затем была полностью переписана на C#. Благодаря этому переходу стало возможным использование атрибутов и рефлексии, что сделало возможной удобную поддержку NUnit’а средой Visual Studio.
 
В системе NUnit определены два главных атрибута:
  •  [TestFixture] – этим атрибутом помечается класс, являющийся «сборником» методов-тестов
  •  [Test] – этим атрибутом помечаются сами методы-тесты

Для начала я написал класс-тест:

Код

<TestFixture()> _
Public Class SomeStuffTest

    Private _expectedStuff As String = "Some stuff"

    <Test()> _
    Public Sub GetSomeStuffTest()
        Assert.AreEqual(_expectedStuff, SomeStuff.GiveMeSomeStuff)
    End Sub

End Class


Код

[TestFixture]
public class SomeStuffTest
{
    private string _expectedStuff = "Some stuff";

    [Test]
    public void GetSomeStuffTest()
    {
        Assert.AreEqual(_expectedStuff, SomeStuff.GiveMeSomeStuff());
    }
}


В этом классе используется один из многочисленных методов класса Assert из NUnit.Framework.

Хе, для начала, разумеется, я решил сделать так, чтобы тест не прошёл smile . Для этого я придал константе _expectedStuff значение "Some other stuff".

Итак, щёлкаем правой кнопкой по названию класса-теста (SomeStuffTest)  и выбираем пункт Run Test(s):

user posted image

// у меня почему-то не установились иконки, там такая ракета должна быть smile

У меня пошла компиляция и окошко Output вдруг высветило:
 

Цитата

------ Test started: Assembly: NUnitTestCS.dll ------

TestCase 'SomeStuffTest.GetSomeStuffTest'
failed: Boom!
    String lengths differ.  Expected length=18, but was length=10.
    Strings differ at index 5.
    expected: <"Some another stuff">
  but was: <"Some stuff">
    -----------------^
    E:\dotNET\NUnitTest\NUnitTestCS\NUnitTest.cs(21,0): at SomeStuffTest.GetSomeStuffTest()


0 passed, 1 failed, 0 skipped, took 0,80 seconds.


Круто smile

Но я пока эту «ошибку» не исправлял, а изучал другие доступные опции. Например, мы можем запустить тест не через NUnit, а используя дебуггер или некий NCoverage, который у меня почему-то не работает.

user posted image

Вариант с дебуггером более банален: при обнаружении ошибки просто в Output пишеццо исключение, а в таск-листе появляется соответствующий error:

user posted image

Ну и, конечно же, я не мог удержаться от того, чтобы исправить ошибку и лицезреть такую лепоту:

Цитата

------ Test started: Assembly: NUnitTestCS.dll ------


1 passed, 0 failed, 0 skipped, took 0,80 seconds.


Пока что это всё smile

Сей текст также прикреплён в вордовском виде снизу smile
  

Это сообщение отредактировал(а) Exception - 17.4.2006, 18:45

Присоединённый файл ( Кол-во скачиваний: 45 )
Присоединённый файл  Test.doc 66,50 Kb
PM   Вверх
-ser-
Дата 18.4.2006, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



Exception, извини конечно, ты откуда свалился?

в NUnite примеров и документации уж больше и не придумаешь.

Цитата(Exception @  17.4.2006,  18:39 Найти цитируемый пост)
у меня почему-то не установились иконки, там такая ракета должна быть 


ракета появляется, если установить TestDriven.NET, но это не cовсем NUnit.
Это Add-In, который интегрируется прямо в студию и имеет интерфейс похожий с NUnit, возможно даже использует модули из него. Вроде бы и удобно, но я знаю тестеры работают почему-то с NUnit, который тестирует только скомпилированный файл. может из-за того что он более оперативно апгрейдится, может просто привыкли, да и нареканий в общем-то нет. 
 


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Exception
Дата 18.4.2006, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Дык, я не на что не претендую smile . Просто многим лень читать доку smile .
А работал я именно со связкой TestDriven.NET + NUnit. Имхо, это гораздо удобнее, чем просто NUnit. 
PM   Вверх
z3nd3r
Дата 31.1.2007, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Цитата(-ser- @ 18.4.2006,  07:40)
Exception, извини конечно, ты откуда свалился?

в NUnite примеров и документации уж больше и не придумаешь.


если знаешь то можешь подкинуть пару ссылок на документацию и примеры ? желательно на русском языке. 
заранее спасибо
PM MAIL   Вверх
z3nd3r
Дата 1.2.2007, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



up!
PM MAIL   Вверх
JleLLla
Дата 6.4.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.4.2008

Репутация: нет
Всего: нет



А на с++ примеры можете показать?? очень надо

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1511 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.