junit 套件测试,分阶段:所有@Before,然后所有@Test,然后所有@After

发布于 2024-09-15 05:21:59 字数 329 浏览 10 评论 0原文

我想要一个 junit 运行程序,它执行所有 @Before 方法,然后执行所有 @Test 方法,然后执行所有 @After 方法。

这就是我的系统测试的工作原理。运行 @Before 方法来设置测试数据和场景。应用程序已启动。然后 @Test 方法将在应用程序在后台运行的情况下运行。这些@Test方法可以更改数据或响应应用程序。然后框架等待应用程序完成。之后,运行@After方法来验证测试结果。

我已经使用了 junit 注释、断言方法和其他各种位。但我只是不知道如何使用 junits 运行程序以这种方式执行测试方法。我无法弄清楚 junit 4.8 中的“计算机”界面,也无法弄清楚如何对此应用规则。

I'd like a junit runner that executes all @Before methods, then all @Test methods, then all @After methods.

This is how my System-Tests work. The @Before methods are run, to setup the test data and scenarios. The application is started. Then the @Test methods are run with the application running in the background. Those @Test methods can change data or respond to the application. Then the framework waits for the application to finish up. Afterward, the @After methods are run to verify the test results.

I already use junit annotations, assertion methods, and other various bits. But I just can't figure out how to use junits runners to execute test methods in this way. I couldn't make heads nor tails of the "Computer" interface in junit 4.8, or figure out how to apply Rules to this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

许你一世情深 2024-09-22 05:21:59

这不是 JUnit 所做的。 JUnit 的设计理念强调独立的单元测试。因此,它不是系统测试的自然框架。您想要做的事情非常适合 TestNG(作为设计目标,它试图跨越单元测试和系统测试)。

在 JUnit 中,@Before 和 @After 在每个测试之前和之后运行。您可以使用 Suite 将此类内容硬塞到 JUnit 中,Suite 引用所有测试并负责所有设置和拆卸,因此 Suite 的 @BeforeClass 和 @AfterClass 方法会在套件之前和之后运行,如果您组织它的话正确可能是您所有的系统测试。

当使用 JUnit 方法变得庞大时,代码中会遇到很多组织挑战,因此,如果这是您想要做的大部分工作,我建议您考虑替代框架。

This isn't what JUnit does. JUnit has a design philosophy that emphasizes independent unit tests. As such, it isn't a natural framework for system tests. What you want to do fits nicely into TestNG (which as a design goal tries to straddle both unit and system tests).

In JUnit the @Before and @After are run before and after each test. You can shoehorn this kind of thing into JUnit using a Suite, which references all of your tests and is responsible for all setup and teardown, so the Suite's @BeforeClass and @AfterClass methods get run before and after the suite, which if you organize it correctly could be all of your system tests.

There are lot of organizational challenges in the code when it gets large with the JUnit approach, so I would suggest you consider and alternative framework if this is the bulk of what you want to do.

狠疯拽 2024-09-22 05:21:59

我认为您可以通过仅创建一种实际的测试方法来解决此问题,该方法仅调用您的实际测试,而您无需将其声明为此类。

有点像:

@Before
public void beforeTest(){}

@After
public void afterTest(){}

@Test
public void test(){
    test1();
    test2();
    test3();
}

public void test1(){}

public void test2(){}

public void test3(){}

I think you can solve this by making only one actual test method, that just calls are your actual tests, which you do not declare as ssuch.

Kinda like:

@Before
public void beforeTest(){}

@After
public void afterTest(){}

@Test
public void test(){
    test1();
    test2();
    test3();
}

public void test1(){}

public void test2(){}

public void test3(){}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文