Тест и фреймворк для Java и .NET - PullRequest
4 голосов
/ 03 июня 2009

Мне бы хотелось узнать ваше мнение о тестовых / макетных средах, которые широко используются и имеют хороший уровень совместимости между Java и .NET. Я хочу изучить эти инструменты для использования в .NET-проекте, но я все еще хочу применить эти знания в проектах Java.

  • Я знаю, что есть много вопросов о средах тестирования / моделирования для этих платформ, особенно здесь, в SO, но я не нашел ни одного вопроса, сравнивающего эти платформы относительно их сходства в этих двух платформах.

Ответы [ 8 ]

5 голосов
/ 03 июня 2009

Каркасы серии N / J ( NUnit / JUnit , NMock / JMock и т. Д.) Обычно являются параллельными портами друг друга или основаны на одних и тех же принципах запуска. Они определенно позволят вам передать хотя бы часть ваших знаний между ними.

4 голосов
/ 03 июня 2009

Вот то, что я вижу из своего опыта на Java-стороне забора.

Фреймворки для юнит-тестирования

Что касается модульного тестирования в Java, почти все используют JUnit, а в JUnit 4.0 используются аннотации, я понимаю, что теперь это больше похоже на NUnit.

Насмешные рамки

Мы использовали EasyMock в нашем проекте около полугода, и мы решили, что он тратит много нашего времени только на выполнение простых задач. На самом деле, мы много шутили о том, что EasyMock - это не просто.

После посещения лекции о насмешливых основах я решил пойти с Mockito и никогда не оглядывался назад. Он позволяет безболезненно частичное издевательство - для чего EasyMock требовалась отдельная библиотека. Кроме того, в Mockito гораздо лучше работает обмен сообщениями об ошибках. Если вы сделаете что-то не так, вы получите подробные ошибки о том, как вы нарушили контракт Mockito.

В любом случае, сделайте оба спина, и я думаю, вы согласитесь, что Mockito - явный победитель.

3 голосов
/ 03 июня 2009

Я бы посоветовал вам взглянуть на Moq для насмешек в .NET. Концептуально он очень похож на Mockito на стороне Java.

2 голосов
/ 03 декабря 2009

Прежде всего, важно разделить понятия испытания и издевательства . Для модульного тестирования (для управления вашими тестами) наиболее популярными являются JUnit (для Java) и NUnit (для .NET). Ситуация с фальшивыми (или изолированными) фреймворками более сложная.

Обсуждающие рамки делятся на два лагеря, которые я люблю называть "обычными" и "альтернативными".

Обычные структуры в первую очередь полагаются на дизайн для обеспечения тестируемости и внедрения зависимостей. Альтернативные платформы используют такие вещи, как Profiling API или инструментальную функцию Java 5 SE (пакет java.lang.instrument) для изменения CIL или байт-кода во время выполнения, что делает любую зависимость зависимой.

Примерами таких альтернативных сетей являются Typemock Isolator (для .NET) и JMockit (для Java) (Typemock не бесплатен, если вы не используете его в проекте с открытым исходным кодом. )

Что касается конвенциональных фреймворков для .NET , то двумя наиболее популярными в настоящее время являются RhinoMocks и Moq . Оба в значительной степени полагаются на функции C # 3.0, в частности, на лямбда-синтаксис, для обеспечения кратких спецификаций поведения и ожиданий фиктивного объекта.

2 голосов
/ 23 октября 2009

NMock далеко не лучший фальшивый фреймворк в мире .NET. Это основано на строке:

Expect.Once.On(mockView).GetProperty("FromAccount").Will(Return.Value("1234"));

Я настоятельно рекомендую что-то более современное, например Rhino.Mocks :

Expect.Call(mockView.FromAccount).Returns("1234");
2 голосов
/ 03 июня 2009

Мы используем RhinoMocks и NUnit для наших проектов .NET. JUnit будет альтернативой Java

1 голос
/ 03 июня 2009

Я использовал EasyMock в некоторых проектах Java, и мне это очень нравится. Кажется, есть .net порт , но я лично еще не использовал его.

Что касается юнит-тестов, я использую JUnit 4.x, который имеет несколько хороших расширений по сравнению с 3.x. Я полагаю, NUnit предоставляет аналогичную функциональность, но также не использовал ее.

0 голосов
/ 03 июня 2009

Мы используем MbUnit и Rhino.Mocks для тестирования. Мне это и вправду нравится.

Причиной, по которой мы используем MbUnit, является Reflector. Возможно, его можно найти и в NUnit, но сначала я нашел его в MbUnit;)

...