2016-04-10 2 views
1

Может ли кто-нибудь объяснить, что такое усиление использования MR-Unit для модульного тестирования MR-заданий, связанных с использованием JUnit и Mockito?MR-Unit vs JUnit для модульных испытаний

Конкретно, что я могу сделать, что я не могу их использовать с помощью JUnit, или это намного сложнее?

Моя идея состоит в том, чтобы переместить всю логику из карт/редукторов в классы-помощники и просто проверить, что соответствующие методы вызываются в mocks.

Зачем использовать MR-Unit?

ответ

0

Я думаю, что самое важное, что mrunit дает вам DSL для тестирования заданий mapreduce. Модульные тесты должны быть ориентированы на читаемость и рассказывать историю, поэтому, если у вас есть API, который соответствует домену, становится легче писать тесты и понимать их позже.

Другой, может быть, не менее важно то, что он дает гораздо лучшие ошибки утверждения и отличается от утверждений по умолчанию JUnit.

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

Но это не так, или, потому что я вижу, что область mrunit немного отличается. Это заставляет вас думать о своей работе очень простым способом: если вы вкладываете определенные вещи в себя, вы хотите получить определенные вещи (и, возможно, некоторые счетчики увеличились), тогда как тесты JUnit часто проверяют какую-то логику. Поэтому, конечно, вы можете поставить и протестировать свою логику отдельно (и, возможно, даже если у вас будет сложная логика) и использовать mrunit для какого-то теста «черного ящика», где вам все равно, где и как реализуется логика, если вы получить правильные выходы для ваших входов.

Смежные вопросы