2011-08-22 323 views
1

我有一个JUnit测试,我想从主要方法运行。我想从数据库中检索多个记录(在main方法中),并使用数据对象将每条记录传递到JUnit中,以便可以测试每条记录。我可以将数据对象传递给JUnit的运行方法吗?如果不是什么是完成这个最好的方法。有很多不同的场景我想使用数据库中的实际数据。可能有多达5000个或更多的记录进行测试。java junit测试循环

感谢 道格

+0

你可以将它作为一个junit测试,并在其中使用for和调用子函数(尽管这很糟糕,因为第一次失败会阻止所有其他的失败)。 –

回答

2

当然,你正在寻找的参数化测试用例。您可以通过使用JUnit轻松完成,而不是使用main()方法。

您需要Parameterized来运行您的测试。

它将通过通过构造函数传递参数来运行不同参数的测试。

Here是一个简单的文章如何做到这一点。你也可以尝试在文档中的例子,了解它是如何工作的。

0

我认为测试你的主要方法更多的是沿着集成测试或功能测试的方向。测试数据库数据也是如此。如果你真的想要一个单元测试,第一步将是使用Extract Method来重构你的主要方法来提取你想测试的业务逻辑。

这样做会给您带来一些好处。首先可以单独测试你的代码(这是单元测试的一个更重要的属性)。如果您重构业务逻辑,您将知道您只是测试该代码,并且没有其他代码影响您的测试。其次,通过使用独立的方法,您可以轻松地模拟您正在查看的测试数据,方法是将不同的参数传递给方法,并根据已知的模拟数据进行断言。