【发布时间】:2016-02-29 14:41:32
【问题描述】:
我想将命令行参数传递给带有 Junit 测试注释的 Java 类,这可能吗?
例子:
@Before
public void before(String a, String b) {
// some processing
}
@Test
public void test() {
}
public static void main(String[] args) {
if (args[0] != null)
DEFAULT_CONTENT_DIR = args[0];
if (args[1] != null)
DEFAULT_FONTS_DIR = args[1];
if (args[2] != null)
formMLDir = args[2];
before(DEFAULT_CONTENT_DIR, DEFAULT_FONTS_DIR);
}
这样的事情可能吗?
【问题讨论】:
-
通常不会从
main方法调用单元测试方法,但也许如果你能解释你想要达到的目标,可能会有更好的方法来做到这一点。 -
我想运行 2 个具有共生关系的类。类 1 生成输出文件,类 2 使用并验证它。所以我需要一个 before 方法来完成我的设置和一个单元测试方法来验证输出。我将这些作为 jars 部署在生产 Linux 环境中,因此测试数据会因盒子而异。所以我需要能够将命令行参数传递给 before 方法(运行 class1),以便它知道从哪里获取生产测试数据。我希望我提供了足够的背景
-
老实说,我不认为这对 JUnit 来说是一个很好的用例。它是为单元测试而设计的,其中与外部类的关系要么非常简单,要么被模拟。我建议你看看集成测试框架。
-
尝试为每种类型的配置创建不同的测试方法,以便测试所有 cinfigs。这样 yiu 就不需要 before 方法,并且您将获得可预测的结果。
标签: java junit conceptual