我正在开发一个程序,它将成为初学程序员的一种游戏。我打算提供一个字段,用户可以根据需要编写代码(方法,类......)。当用户想要提交代码时,我会将文本字段的内容复制到.java文件中,调用编译器来编译这个类,然后我想测试代码是否可以正常使用jUnit。
嗯,我知道jUnit用于开发目的,但我认为在这种情况下实现它可能非常有用。
现在的问题是,当我需要编译我的程序时,应该被测试的类(用户的代码)不会存在。所以我不能只打电话
assertEquals( "Wrong sum", 6, Foo.sum( 4, 2));
因为它不知道Foo类是什么,因为它在compilatoin时永远不会存在 - 在用户运行应用程序并开始编码之前。
我以为我可以创建一个虚拟类,只是为了编译,但是当我需要真实的东西时,我将无法替换文件或写入另一个文件,如Foo2.java,因为FooTest.java只能使用对象Foo ....
我非常感谢你的建议!我该怎么做才能应对这种情况?
谢谢:)
答案 0 :(得分:1)
两个选项:
反思版本:
如果您要测试的类的实例(可以是Object
类型),请使用getClass
获取Class
对象。然后使用getDeclaredMethods获取Methods
的列表。迭代Methods
,直到找到你要测试的那个(希望是唯一的公共方法)。