Java 如何对对象进行JUnit测试?

Java 如何对对象进行JUnit测试?,java,junit,Java,Junit,我有一个类似的方法 public void method(final Object A){ .... } 现在我想编写一个测试,确保对象a始终是最终的。我怎么写这样的测试呢?恐怕你不明白你的方法是做什么的。方法中的最后一个参数仅表示无法在方法中重新分配该参数 public void doStuff( String s ){ s = "OK"; } 但是 因此,没有任何行为可以测试是否存在。如果无效,它将不会编译 编辑:如果你想进行最终的单元测试,我也不认为这是可能的,因为我相

我有一个类似的方法

public void method(final Object A){ .... }

现在我想编写一个测试,确保对象a始终是最终的。我怎么写这样的测试呢?

恐怕你不明白你的方法是做什么的。方法中的最后一个参数仅表示无法在方法中重新分配该参数

 public void doStuff( String s ){
     s = "OK";
 }
但是

因此,没有任何行为可以测试是否存在。如果无效,它将不会编译



编辑:如果你想进行最终的单元测试,我也不认为这是可能的,因为我相信一旦内部检查了信息,在编译时信息就会丢失。

我不确定你在问什么。。。它是最终的;它被标记为这样。你想测试它的值在执行
方法的过程中不会改变吗?基本上我不想在这个方法中改变对象A。所以我想阻止其他开发人员来更改对象的“最终”类型。我想要一个单元测试来防止这种恶作剧。我认为这是一个非常好的问题-有可能对
final
方法参数的存在进行单元测试吗?@skaffman我认为没有,因为我相信“final”本质上是一个编译时注释,我没有时间花在这上面了,所以这只是一个指针,不是答案。您要做的是使用反射来获取方法的参数(不知道如何做),并检查它的修饰符以确定它是否是最终的@user381091这些是类成员(又名字段)和方法的修饰符,但不是方法参数的修饰符。您会注意到,方法参数也不能是静态、抽象、易失性、瞬态等。如果这是实际的运行时注释,您可以使用method.getParameterAnnotations()。基本上,我不希望在该方法中更改对象A。所以我想阻止其他开发人员来更改对象的“最终”类型。我想要一个单元测试来防止这种恶作剧
 public void doStuff( final String s ){
     s = "ERROR s cannot be assigned because it is final!";//causes error
 }