使用jUnit测试尚未创建的类/对象

时间:2014-10-08 16:47:40

标签: java junit automated-tests

我正在开发一个程序,它将成为初学程序员的一种游戏。我打算提供一个字段,用户可以根据需要编写代码(方法,类......)。当用户想要提交代码时,我会将文本字段的内容复制到.java文件中,调用编译器来编译这个类,然后我想测试代码是否可以正常使用jUnit。

嗯,我知道jUnit用于开发目的,但我认为在这种情况下实现它可能非常有用。

现在的问题是,当我需要编译我的程序时,应该被测试的类(用户的代码)不会存在。所以我不能只打电话

assertEquals( "Wrong sum", 6, Foo.sum( 4, 2));

因为它不知道Foo类是什么,因为它在compilatoin时永远不会存在 - 在用户运行应用程序并开始编码之前。

我以为我可以创建一个虚拟类,只是为了编译,但是当我需要真实的东西时,我将无法替换文件或写入另一个文件,如Foo2.java,因为FooTest.java只能使用对象Foo ....

我非常感谢你的建议!我该怎么做才能应对这种情况?

谢谢:)

1 个答案:

答案 0 :(得分:1)

两个选项:

  • 让用户实现一个接口并使用JUnit中的接口
  • 使用反射从类中获取公共方法并调用它。

反思版本:

如果您要测试的类的实例(可以是Object类型),请使用getClass获取Class对象。然后使用getDeclaredMethods获取Methods的列表。迭代Methods,直到找到你要测试的那个(希望是唯一的公共方法)。