Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。

4
Mockito可以在不考虑参数的情况下对方法进行存根吗?
我正在尝试使用Mockito测试一些旧代码。 我想存根FooDao在生产中使用的a ,如下所示: foo = fooDao.getBar(new Bazoo()); 我可以写: when(fooDao.getBar(new Bazoo())).thenReturn(myFoo); 但是明显的问题是,getBar()从来没有使用与Bazoo我存根方法相同的对象来调用它。(请该new运算符!) 如果我可以以不myFoo考虑参数的方式返回该方法的方法来对它进行存根,我将非常喜欢。失败的话,我会听取其他解决方法的建议,但我真的想避免更改生产代码,直到有合理的测试范围为止。

30
公开私有方法以对其进行单元测试……好主意?
主持人注意: 这里已经发布了39个答案(有些已经删除)。 你发布之前你的答案,考虑你是否能添加一些有意义的讨论。您很有可能只是重复别人已经说过的话。 我偶尔会发现自己需要在类中公开一个私有方法,只是为此编写了一些单元测试。 通常这是因为该方法包含该类中其他方法之间共享的逻辑,并且可以更轻松地自行测试该逻辑,或者另一个原因可能是我想测试同步线程中使用的逻辑而不必担心线程问题。 其他人是否发现自己这样做,因为我真的不喜欢这样做?我个人认为,好处超过了公开方法的问题,而该方法实际上并没有提供课堂以外的任何服务。 更新 谢谢大家的回答,似乎引起了人们的兴趣。我认为,普遍的共识是应该通过公共API进行测试,因为这是使用类的唯一方法,我对此表示同意。我在上面提到的几个我在上面会做的情况并不常见,我认为这样做的好处是值得的。 但是,我可以看到每个人都指出,它永远不会真正发生。而且,当我多考虑一下时,我认为更改代码以容纳测试是一个坏主意-毕竟,我认为测试在某种程度上是一种支持工具,并且如果愿意的话,将系统更改为“支持支持工具”是公然的。坏习惯。
301 c#  java  unit-testing 




9
如何避免依赖注入构造函数的疯狂?
我发现我的构造函数开始看起来像这样: public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... ) 不断增加的参数列表。由于“容器”是我的依赖项注入容器,所以为什么我不能这样做: public MyClass(Container con) 每堂课?不利之处是什么?如果执行此操作,则感觉就像我在使用精美的静态方法。请分享您对IoC和依赖注入疯狂的想法。

9
Gson:直接将String转换为JsonObject(无POJO)
似乎无法弄清楚。我正在GSON中尝试JSON树操作,但是在转换为之前,我不知道或没有POJO将字符串转换为的情况JsonObject。是否有办法直接从a String转到JsonObject? 我尝试了以下(Scala语法): val gson = (new GsonBuilder).create val a: JsonObject = gson.toJsonTree("""{ "a": "A", "b": true }""").getAsJsonObject val b: JsonObject = gson.fromJson("""{ "a": "A", "b": true }""", classOf[JsonObject]) 但a失败,JSON被转义并解析为JsonString唯一,并 b返回一个empty JsonObject。 有任何想法吗?
300 java  json  gson 




9
如何在不获取“ SomeType @ 2f92e0f4”的情况下打印Java对象?
我有一个定义如下的类: public class Person { private String name; // constructor and getter/setter omitted } 我尝试打印类的实例: System.out.println(myPerson); 但我得到以下输出:com.foo.Person@2f92e0f4。 当我尝试打印Person对象数组时,发生了类似的事情: Person[] people = //... System.out.println(people); 我得到了输出: [Lcom.foo.Person;@28a418fc 此输出是什么意思?如何更改此输出,使其包含我的姓名?以及如何打印对象的集合? 注意:这是关于此主题的规范问答。
299 java  string  object  tostring 




12
IntelliJ IDEA生成serialVersionUID
如何在IntelliJ IDEA中生成此值? 我转到设置 -> 错误 -> 序列化问题 ->没有'serialVersionUID'的可序列化类,但是它仍然没有显示警告。我的类PKladrBuilding父类实现了Serializable接口。 部分代码: public class PKladrBuilding extends PRQObject public abstract class PRQObject extends PObject public abstract class PObject implements Serializable

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.