2014-10-08 37 views
0

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

那么,我知道jUnit是用于开发目的,但我认为它可能是非常有用的在这种情况下执行它。

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

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

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

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

我真的很感激你的建议家伙!我能做些什么来处理这种情况?

谢谢:)

+1

你有没有考虑过使用mockito - http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html – nbz 2014-10-08 16:59:12

回答

1

两个选项:

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

反思版本:

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

相关问题