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

问题描述 投票:0回答:3

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

谢谢。

java windows eclipse junit command
3个回答
2
投票

非常模糊的问题。具体来说,您没有提到如何运行 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 {
    }
}

1
投票

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

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

如果您想为每个单元测试运行外部命令,那么您应该在

@Before
设置方法中执行此操作。


0
投票

免责声明:我是 TestProcesses 的作者。

以防万一有人来到这里寻找解决方案:

问这个问题已经有一段时间了。假设您同时已迁移到 JUnit5 并正在使用(或可以使用)Spring Test,您可以查看TestProcesses。它是一个 JUnit5 扩展,用于管理测试期间所需的应用程序/程序(进程)的生命周期。

听起来这就是您正在寻找的东西,它允许您以声明方式管理流程的生命周期,而无需在测试类中使用大量样板。

https://github.com/netmikey/testprocesses

© www.soinside.com 2019 - 2024. All rights reserved.