在Eclipse中执行JUnit测试之前运行外部命令

6ss1mwsb  于 2023-11-18  发布在  Eclipse
关注(0)|答案(3)|浏览(189)

在给定的JUnit文件中运行测试之前,是否可以运行一个外部命令?我使用Eclipse的Run命令来运行我的测试。
谢谢.

gfttwv5a

gfttwv5a1#

非常模糊的问题。具体来说,你没有提到你是如何运行JUnit测试的。你还提到了“文件”,一个文件可以包含多个JUnit测试。你想在每个测试之前运行外部命令,还是在执行任何测试之前?
更多关于主题:
如果您使用的是JUnit 4或更高版本,则可以使用@Before注解标记一个方法,该方法将在每个标记的@Test方法之前执行。或者,使用@BeforeClass标记静态void方法将导致它在类中的任何@Test方法运行之前运行。

public class MyTestClass {

    @BeforeClass
    public static void calledBeforeAnyTestIsRun() {
        // Do something
    }

    @Before
    public void calledBeforeEachTest() {
       // Do something
    }

    @Test
    public void testAccountCRUD() throws Exception {
    }
}

字符串
如果您使用的是JUnit 4之前的版本,则可以覆盖setUp()setUpBeforeClass()方法,作为@Before@BeforeClass的替代。

public class MyTestClass extends TestCase {

    public static void setUpBeforeClass() {
        // Do something
    }

    public void setUp() {
       // Do something
    }

    public void testAccountCRUD() throws Exception {
    }
}

bogh5gae

bogh5gae2#

假设您使用的是JUnit 4.0,您可以执行以下操作:

@Test
public void shouldDoStuff(){
    Process p = Runtime.getRuntime().exec("application agrument");
    // Run the rest of the unit test...
}

字符串
如果你想为每个单元测试运行外部命令,那么你应该在@Before设置方法中执行。

wa7juj8i

wa7juj8i3#

免责声明:我是TestProcesses的作者。
以防有人在这里寻找解决方案:
这个问题已经有一段时间没有被问到了。假设你已经迁移到了JUnit 5,并且正在使用(或者可以使用)Spring Test,你可以看看TestProcesses。它是一个JUnit 5扩展,管理测试期间所需的应用程序/程序(流程)的生命周期。
听起来这正是您所需要的,它允许您以声明的方式管理流程的生命周期,而无需在测试类中使用大量样板文件。
https://github.com/netmikey/testprocesses

相关问题