Java junit的不同常量值

Java junit的不同常量值,java,Java,在我测试的类中定义的常量很少,逻辑的某些部分取决于这些常量的值 在我的例子中,我从一个输入CSV文件创建多个批。每个批次的大小以常量定义。我正在创建一个小的输入文件并将其传递给测试用例。但由于文件非常小,它只创建一个批 一个显而易见的解决方案是创建一个更大的文件并将其传递给测试用例。但是我必须创建一个非常大的文件,比如15MB。另一种方法是,如果我可以在测试用例中调整常量,使其具有较小的值,这肯定需要一种黑客方法 我觉得第一个解决方案是正确的,但是有什么建议吗?你可以通过反射来改变常数,但是你需

在我测试的类中定义的常量很少,逻辑的某些部分取决于这些常量的值

在我的例子中,我从一个输入CSV文件创建多个批。每个批次的大小以常量定义。我正在创建一个小的输入文件并将其传递给测试用例。但由于文件非常小,它只创建一个批

一个显而易见的解决方案是创建一个更大的文件并将其传递给测试用例。但是我必须创建一个非常大的文件,比如15MB。另一种方法是,如果我可以在测试用例中调整常量,使其具有较小的值,这肯定需要一种黑客方法


我觉得第一个解决方案是正确的,但是有什么建议吗?

你可以通过反射来改变常数,但是你需要改变它的事实表明你应该重新考虑你的类的设计

将每个批的大小传递给类的构造函数如何

  • 它使您的类在实际使用中更加灵活(您可能会在某个阶段决定大小应该增加/减少,或者针对不同的用例使用不同的大小)
  • 您的类将再次可测试

要回答应该如何做,需要更多的信息,但通常情况下,使用反射API可以“黑客”并更改这些常量。虽然它非常危险,通常应该避免,但有时在单元测试中使用它是可以的。此外,您可以通过编程方式创建一个15MB的垃圾文件,它可能会更好地测试您的组件。这也是一个选项。除了我必须为创建的这么多批编写大量模拟行为之外,这个大小是有上限的。所以我想知道,若客户端限制超过,我是否应该抛出异常,或者将其重置为最大限制。可能重置为最大限制并在javadoc中提及此行为更符合逻辑。@Jitendra Yes-在javadoc中记录允许的值,如果客户端传递了其他内容,则抛出IllegalArgumentException。