当前位置: 首页 > 知识库问答 >
问题:

如何传递命令行参数与gradle测试?[重复]

夏烨霖
2023-03-14

我正在使用gradle运行JUnit测试。问题是我需要将参数从命令行传递给测试。我试图传递系统属性,但失败了。

gradle test -Darg1=something

以下是我的测试:

public class MyTest {
    @Test
    public void someTest() throws Exception {
        assertEquals(System.getProperty("arg1"), "something");
    }
}

它失败是因为没有arg1参数。是否可以以某种方式传递命令行参数?

共有2个答案

严欣怡
2023-03-14

当运行gradle test-Darg1=smth时,将系统参数arg1传递给gradle JVM,而不是运行测试的测试JVM。它的设计是为了保护测试不受副作用的影响。

如果您需要将参数传播到测试,请使用以下内容

test {
    systemProperty 'arg1', System.getProperty('arg1')
}

并以同样的方式运行。

田念
2023-03-14

使用-D发送参数。就像这样:

./gradlew test -Dgrails.env=dev -D<yourVarName>=<yourValue>

请参见gradle命令行留档-D。

要在测试中访问它,需要在构建中传播它。格雷德尔档案。

    test {
       systemProperty "propertyName", "propertyValue"
    }

您也可以像这样传递所有系统属性:

    test {
        systemProperties(System.getProperties())
    }
 类似资料:
  • 我尝试将参数从命令行传递到gradle。 我的身材是: 当我这样做时: 我得到这个: 我的问题是我应该为main提供什么?任何java文件包的名称?有具体的路径吗?什么应该是真正的源集?

  • 我试图将一个参数从命令行传递到java类。我关注了这篇文章:http://gradle.1045684.n5.nabble.com/gradle-application-plugin-question-td5539555.html,但是代码对我来说不起作用(也许它不适合JavaExec?)。以下是我所尝试的: 上面硬编码的args值的输出是: 任何关于如何将命令行参数传递给gradle的指针都很感

  • 要启动Java程序,我可以传递如下参数: 在gradle命令行中有哪些好的方法可以做到这一点: 这是正在建造的。格雷德尔:

  • 我试图找到从命令行传递gradle任务参数的最佳方法。我有这个任务。我想从学生练习中解包解决方案,并将它们复制到项目中的正确位置,以突出它们。我这样称呼这个任务: 这是gradle任务: 你有什么建议来优化这个过程吗?

  • 考虑下面的用例。 设计用于创建用户帐户的测试用例。 现在我想用不同的参数运行这个测试用例,例如名称、年龄等,我想通过命令行控制这些参数。

  • 我有一个java和groovy类,由gradle Task运行。我已经设法使它工作,但我不喜欢在命令行中传递参数的方式。下面是我当前通过命令行执行的方法: my build。gradle代码采用这些参数如下所示: 我想知道有没有一种方法可以更好地传递参数,比如: 以及如何在我的java类中使用它们。