@After,@before не работает в testcase
я начал тестирование и теперь я хочу использовать @After
, @Before
и @Test
но мое приложение работает только в @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 ответов
на AbstractTransactionalDataSourceSpringContextTests
класс заставляет использовать старый JUnit 3.X синтаксис, что означает, что любая из аннотаций JUnit 4 не будет работать.
метод runBare()
выполнена не из-за @Before
аннотация, но потому что она называется runBare()
, который является методом, предоставленной ConditionalTestCase
и JUnit TestCase
класса.
поэтому у вас есть 2 решения:
- используйте ответ AlexR для использования тестов JUnit 4 и Spring;
- Keep ваше наследство
AbstractTransactionalDataSourceSpringContextTests
, аonSetUp
иonTearDown
методы вместо@Before
и@After
методы.
это должно сработать... Но поскольку вы работаете с spring framework, а JUnit 4 был представлен несколько лет назад, я предлагаю вам использовать аннотации вместо наследования.
Итак, аннотируйте класс с @RunWith(SpringJUnit4ClassRunner.class)
. Удалить extends AbstractTransactionalDataSourceSpringContextTests
.
не забудьте сделать @Before и @After методы статический
Теперь он должен работать.
даже если вы хотите продлить весенние абстрактные тестовые классы, по крайней мере, обратите внимание, что некоторые среди них есть осужденные. Например, класс AbstractTransactionalDataSourceSpringContextTests
устарела.