2010-03-22 5 views
4

У меня есть два класса, которые я тестирую (назовем их ClassA и ClassB). Каждый из них имеет свой собственный тестовый класс JUnit (testClassA и testClassB соответственно).Запуск тестовых классов JUnit из другого тестового класса JUnit

ClassA полагается на ClassB для нормальной работы, поэтому я хочу, чтобы ClassB проходил тесты перед запуском testClassA (иначе результаты от testClassA были бы бессмысленными).

Каков наилучший способ для этого? В этом случае это для назначения, поэтому, если это возможно, мне нужно сохранить его в двух указанных тестовых классах.

Может ли/исключить исключение из testClassA, если тесты TestClassB не все пройдены? Это потребовало бы, чтобы testClassB запускался невидимо и просто сообщал о своем успехе/неудаче testClassA, а не в GUI (через JUnit).

Я использую Eclipse, и JUnit 4.8.1

Обновление: До сих пор лучший, что я сумел это отдельный файл с тестовым набором, как показано ниже. Это все еще не совсем то, что мне нужно, поскольку оно все еще позволяет запускать тесты ClassB, если ClassA не выполняет некоторые тесты.

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

@RunWith(Suite.class) 
@Suite.SuiteClasses({testClassA.class, testClassBCode.class}) 
public class testClassB { 
} 

ответ

9

Ваши модульные испытания не должны зависеть от других испытаний.

Одним из решений вашей проблемы было бы издеваться над ClassB в тестах ClassA, чтобы проверить его поведение независимо от результатов тестов ClassB.

Я рекомендую вам дать mockito a try!

+0

В этом случае, поскольку это назначение, я не могу полагаться на своих лекторов, имеющих mockito - по сути, они просто собираются скопировать мой Java-пакет в свой проект, запустить тесты на моих классах и запустить мои тесты на их классы. (для будущей справки, очевидно, я хотел бы знать, как лучше подойти к таким вещам). Хотя это может быть и не идеально, на данный момент я просто ищу способ (если он существует) сказать '// не запускайте этот тест, если ClassB не прошел его тесты , не полагаясь на тестер увидел мой комментарий. –

+0

Я не думаю, что вы можете сделать это в Юнит. Вы можете указать порядок тестирования с помощью дополнения OrderedSuite для JUnit, TestNG или других структур тестирования. – mgv

0

Вы должны попробовать testng рамки, которые разрешают такое тестирование зависимости.

+2

Как и в предыдущем комментарии: это для задания, и тесты JUnit являются обязательными. –

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