如何使用集成开发环境(IDE)快速运行Java中的静态代码片段?

3
我希望能在IDE中快速检查我正在分析的静态方法的结果,如果可能的话。
public static int foo(int a, int b){
    return (a & 11) ^ b;
}

例如,右键单击表达式并运行它,类似如下:
> foo(11, 2)
> 9
> foo(28, 3)
> 11

我事先不知道结果(实际代码更加复杂),因此单元测试行不通。

我该怎么做?


2
你有什么问题? - Korashen
我相信在任何IDE中都可以实现。有关IntelliJ的说明,请参见此处https://www.jetbrains.com/help/idea/running-applications.html。 - Jan Ossowski
可能是如何编写单元测试?的重复问题。 - AxelH
2
Eclipse:请参阅创建Java Scrapbook页面 - howlger
我不想运行测试,我想从代码片段中运行一个函数并获取其结果。单元测试意味着我知道结果,但在我的情况下(这个简化的代码除外),我不知道结果。 此外,我无法运行应用程序,因此我也无法评估表达式。我的唯一选择是静态分析和运行像这样的代码片段。 @howlger 我认为你找到了它。在Intellij上也有 https://dev59.com/NmTWa4cB1Zd3GeqPIfZT - Jivay
显示剩余2条评论
3个回答

2

1
在Java 9中,您可以使用其他答案中提到的。如果没有,您仍然可以使用单元测试。从技术上讲,单元测试不需要有一个断言。您可以在单元测试中放置任何代码,这意味着您也可以像这样做:
@Test
public void getMyResult(){
    System.out.ptintln(foo(1,10));
}

显然,您不应将此测试提交到您的源代码存储库中,因为测试设计得很糟糕(它始终会通过,除非foo抛出异常),但是对于您的目的,这可能会起到作用。
编辑:
正如@AxelH在评论中所说,您也可以创建一个简单的main方法。

那并不是真正的@Test。只需创建一个 main 方法即可。这样就一样了。 - AxelH
是的,你说得对。我实际上甚至没有考虑创建一个 main 方法。我已经将它添加到我的答案中了,谢谢你的建议 :) - vatbub
另一方面,根据项目/设置的不同,创建一个@Test可能比创建一个主方法更容易。 - vatbub

1
如果您使用IntelliJ和Java 9+,则可以访问jshell,这是Java 9及以上版本中附带的repl。这使您可以将方法定义粘贴到jshell控制台中,然后使用不同的参数运行它。有关更多详细信息,请参见https://blog.jetbrains.com/idea/2017/09/java-9-and-intellij-idea/(实际的JShell部分在一半下面,并且显然没有直接链接)。

你仍然需要将方法复制粘贴到jShell中吗?那么使用Intellij没有增加价值。它们只是提供了一个到jshell的快捷方式。这太糟糕了。如果它可以“预加载”方法而不必复制粘贴,那将非常有用。 - AxelH
@AxelH 的优点在于它设置了您项目的类路径。 - Tristan Tarrant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接