Вопрос по java – @ После @ перед тем, как не работать в тестовом режиме

9

Я начал тестирование, и теперь я хочу использовать@After, @Before а также@Test но мое приложение запускает только@Before метод и дает вывод на консоль

before

Однако, если я удалю@After а также@Before он запускает @Test. Мой код здесь:

public class TestPractise extends AbstractTransactionalDataSourceSpringContextTests{

    @Before
    public void runBare(){
        System.out.println("before");
    }

    @Test
    public void testingMethod(){
        System.out.println("testing");
    }

    @After
    public void setDirty(){
        System.out.println("after");
    }
}

Почему нет@After, @Test а также@before работает одновременно?

Ваш Ответ

3   ответа
10

AbstractTransactionalDataSourceSpringContextTests Класс заставляет использовать старый синтаксис JUnit 3.x, что означает, что любая из аннотаций JUnit 4 не будет работать.

Ваш методrunBare() выполняется не из-за@Before аннотации, но потому что он названrunBare(), который является методом, предоставляемымConditionalTestCase и ЮнитTestCase учебный класс.

Итак, у вас есть 2 решения:

Use the AlexR answer to use JUnit 4 tests and Spring; Keep your inheritance of AbstractTransactionalDataSourceSpringContextTests, but use the onSetUp and onTearDown methods instead of the @Before and @After methods.
Получили ту же проблему, смешивая JUnit 4 и 5. Проверьте импорт на наличие аннотаций и убедитесь, что они совпадают.
5

@BeforeEach вместо@Before а также@AfterEach вместо@After.

Не могли бы вы немного объяснить, почему и как это решает проблему?
В моем случае мой & quot; @ Before & quot; и & quot; @ После & quot; код не работал, но он работал, когда я заменил & quot; @ Before & quot; с & quot; @ BeforeEach & quot; и & quot; @ После & quot; и & quot; @ AfterEach & quot ;.
Просто более конкретные имена работают одинаково. Но поддержка (Выполнение) зависит от версии Junit.
3

а JUnit 4 был представлен много лет назад, я предлагаю вам использовать аннотации вместо наследования.

Итак, аннотируйте свой класс с@RunWith(SpringJUnit4ClassRunner.class), Удалитьextends AbstractTransactionalDataSourceSpringContextTests.

Не забудьте сделать@До и методы @Afterstatic

Теперь это должно работать.

Даже если вы хотите расширить классы абстрактных тестов Spring, хотя бы обратите внимание, что некоторые из них устарели. Например классAbstractTransactionalDataSourceSpringContextTests устарела.

Извините за задержку. Пример очень прост. Просто удалите & quot; Расширяет ... & quot; и добавить аннотацию, которую я написал в классе. Затем попробуйте запустить тест.
Не могли бы вы предоставить мне пример для @RunWith (SpringJUnit4ClassRunner.class) ?? abhishek ameta
Здравствуйте, user1147361: вы можете найти пример здесь с исходным кодом:ledohoanglong.wordpress.com/2012/01/02/…
если вы напишите пример для AbstractTransactionalDataSourceSpringContextTests, это было бы хорошо .. abhishek ameta

Похожие вопросы