5

我目前是使用 Java 的课程的教师助理。我正在尝试编写一段代码来测试以确保学生的方法是正确的,但通常学生甚至不会实现该方法,或者他们会称其为不正确的东西,这显然会导致 Unresolved运行我的测试代码时出现编译问题。有没有办法在运行时捕获这个错误,这样我的测试代码就可以执行,而不必玩弄学生提交的代码?

  • 编辑:刚刚发现编译器在运行前生成了一个未解决的编译问题。考虑到这一点,有没有办法做我上面解释的事情?
  • 编辑:另外,我无法控制分配的结构方式,所以我不能引入接口或存根等。
4

4 回答 4

2

如果我是 TA,我会写一些单元测试并告诉学生通过测试。让他们尽早进行测试。

如果代码无法编译,那么在运行时检测它是没有意义的。如果它无法编译,您将无法运行。

于 2011-10-25T18:08:57.273 回答
2

如果您使用反射,您可以检查该方法是否存在、调用方法并遍历现有方法以可能找到学生的方法。

有关从文件加载学生代码的信息,请参见 UrlClassLoader 类。

于 2011-10-25T18:14:49.397 回答
1

如果我理解您的问题,您正在尝试验证学生实现的接口以及实现的正确性。反射 API 将允许确定一个类是否实现了正确的 API,如果已经实现,则调用该 API。看java.lang.Class、java.lang.Method等。

于 2011-10-25T18:17:38.643 回答
1

听起来您现在已经进入了课程的面向对象部分。我认为创建一个包含所有已分配方法的超类可能是个好主意。然后学生可以简单地扩展该超类并实现方法。你的存根应该只抛出一个 RuntimeException ,这会导致相应的单元测试失败。这应该允许您创建单元测试,而不必过多担心学生没有实施特定的方法。

于 2011-10-25T18:19:09.377 回答