Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > NUnit: первые впечатления


Автор: Exception 17.4.2006, 18:39
Test-Driven Development в .NET
 

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

Где взять?

Вот он http://testdriven.net лежит.

Пишем класс

После закачки сетупа с вышеупомянутого сайта, я перезапустил студию и создал два новых проекта 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
  

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

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

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


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

Автор: Exception 18.4.2006, 20:03
Дык, я не на что не претендую smile . Просто многим лень читать доку smile .
А работал я именно со связкой TestDriven.NET + NUnit. Имхо, это гораздо удобнее, чем просто NUnit. 

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

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


если знаешь то можешь подкинуть пару ссылок на документацию и примеры ? желательно на русском языке. 
заранее спасибо

Автор: z3nd3r 1.2.2007, 01:16
up!

Автор: JleLLla 6.4.2008, 20:54
А на с++ примеры можете показать?? очень надо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)