当前位置: 首页 > 面试题库 >

@After,@ before无法在测试用例中工作

柴霖
2023-03-14
问题内容

我已经开始测试,现在我想用@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同时工作?


问题答案:

AbstractTransactionalDataSourceSpringContextTests级部队使用旧的JUnit
3.x的语法,这意味着任何的JUnit 4注释将无法正常工作。

runBare()执行您的方法不是因为@Before注释,而是因为它名为runBare(),这是ConditionalTestCaseJUnit
TestCase类提供的方法。

因此,您有2个解决方案:

  • 使用AlexR答案使用JUnit 4测试和Spring;
  • 保留对的继承AbstractTransactionalDataSourceSpringContextTests,但请使用onSetUponTearDown方法,而不要使用@Before@After方法。


 类似资料:
  • Before and After 是 jQuery 插件,可以查看之前版本的图片,也可以覆盖掉当前的图片。 Before and After 使用一个拖拽处理条来让用户决定如何显示这两个图片。 在线演示

  • 新增 html,text,append,before,after,remove html: function (value) { if (value === undefined && this[0].nodeType === 1) { return this[0].innerHTML; } else { for (var i = 0; i < thi

  • 我们可以说spring boot AOP中的@around注释是@before和@after方法的组合吗。 使用这个用@around注释注释的advice方法,我们可以用proceed()获得输入参数和返回的对象,该对象创建一个代理演示类并调用实际实现的方法。如果我们没有@around注释,那么我们必须使用@before和@after注释以及两个不同的方法来实现输入和输出参数。 那么我们是否可以说

  • 问题内容: 我有一些通用的设置代码,已将这些代码分解为标记为的方法。但是,不必为每个测试都运行所有这些代码。有没有一种标记方式,使得该方法仅在某些测试之前运行? 问题答案: 只需将不需要安装代码的测试移到单独的测试类中即可。如果您有一些测试通用的其他代码,可以帮助保留这些代码,请将其移到帮助程序类中。

  • 我在一个Spring Boot项目中有一个rest控制器API。我需要添加一个通用函数,例如,在控制器中的所有路由之前验证每个传入请求的令牌,而不是为每个路由单独调用相同的函数。有没有一种方法可以通过基于@RestController的路由而不是通过web flux处理程序和路由器的方式来实现这一点? 编辑:是否有一种方法只对某些路由而不是所有传入请求使用拦截器?

  • 我正在通过testNG xml运行我的测试套件。以下是xml: 我使用的数据提供者注释为并行=true。我有大约2000个测试用例,它们在一个具有不同数据的测试用例中循环运行。当它不并行时,测试运行良好。当我尝试在4个线程中并行运行测试时,前后方法在同一个线程中执行,但是我的测试方法被分配给完全不同的线程。我如何确保对于测试用例,方法之前、方法之后和测试都在测试实例的同一线程中运行。