草庐IT

java - 有没有办法强制 JUnit 在任何未经检查的异常上失败,即使被吞噬了

我正在使用JUnit为没有单元测试的遗留代码编写一些更高级别的测试。大部分代码“吞噬”了各种未经检查的异常,如NullPointerExceptions(例如,仅打印堆栈跟踪并返回null)。因此,即使在较低级别代码的各个点存在级联灾难,单元测试也可以通过。有没有办法让测试在第一个未经检查的异常上失败,即使它们被吞没了?我能想到的唯一替代方法是编写一个自定义JUnit包装器来重定向System.err,然后分析输出中的异常。 最佳答案 如果您在IDE的调试器中执行测试,您可以将IDE配置为在抛出异常时中断。

java - 如何强制 Hibernate 返回一个空值而不是 null?

我使用的是Oracle11GR2,当varchar2字段为空时,在空字段上执行System.out.println将在我的Eclipse控制台上显示null。我怎样才能让它显示空字符串? 最佳答案 在getter中使用这个技巧很好,但它会改变模型的预期行为。正如我在评论中引用的那样,Oracle无法区分空字符串和null。如果您确定您正在使用的所有字符串属性永远不会为null,您可以像这样在hibernate中创建一个拦截器publicclassEmptyStringInterceptorextendsEmptyIntercepto

java - 强制maven为maven central使用HTTPS的正确方法是什么?

最近sonatype使mavencentral支持https(backgroundinformation)。我现在已将以下代码片段添加到我的pom.xml中以强制在任何地方使用https:centralhttps://repo1.maven.org/maven2falsecentralhttps://repo1.maven.org/maven2false问题:这就足够了吗?还是某处仍然涉及http?这是正确的做法吗?正如我所读到的,我应该在settings.xml中执行此操作。但是其他使用我的(开源)项目的人将不会使用安全连接。更新例如,它看起来不够充分仍然使用HTTP的程序集插件:[

java - 如何强制子类调用抽象实现的方法

基本上,我想做的是强制子类调用一个抽象父类(superclass)方法(在子类中实现),所以我不必每次创建一个新的时都显式地写它子类。我曾在父类(superclass)的构造函数中写过一次,因为我希望它在每次实现时都强制执行。publicabstractclassSupahClass{publicSupahClass(){doStuff();//ItISexecutedwhenthesubclassconstructoriscalledinit();//NOTexecuted,eventhoughit'simplemented}privatevoiddoStuff(){...}prot

java - 遍历所有字节值 -128-127 而无需在 Java 中强制转换

我需要遍历所有字节值(-128到127,包括在内)。我可以使用int迭代器,但我每次都必须转换为byte.使用byte迭代器有我无法测试b的问题因为它会溢出。我想到了使用while循环并在递增之前进行测试,这是迄今为止我最好的解决方案。有没有更好的方法? 最佳答案 Java字节是有符号的,所以它们的值是-128到127。无论如何,你不应该担心类型转换和额外的检查,因为它们很容易优化掉。事实上,在JVM级别,没有字节变量这样的东西。无论如何,它都被视为一个int。 关于java-遍历所有字

java - 如何强制 Eclipse m2e 插件为项目使用 jdk

我将Maven与“EclipseKeplerJavaEE”结合使用。我在“maven-compiler-plugin”中有这样的东西:1.71.7每次我在“pom.xml”中更改某些内容时,eclipse都会强制我执行“Maven->更新项目”,然后项目设置更改为使用JRE而不是JDK,并且一些Maven构建停止工作。我发现解决它的唯一解决方案是设置我如何设置eclipse/m2e以使用JDK是在maven-compiler-plugin中定义一个路径。这不是好的解决方案,因为它仅适用于我的计算机,对其他计算机将失败。我认为有一些maven或m2e定义说“使用jdk而不是jre”。

java - 有什么方法可以强制类在 Java 中具有 public static final 字段?

有没有办法强制Java中的类具有publicstaticfinal字段(通过接口(interface)或抽象类)?或者至少只是一个公共(public)领域?我需要以某种方式确保一组类有publicstaticfinalStringTYPE="...";在其中。 最佳答案 不,你不能。你只能强制他们有一个非静态的getter方法,它会为每个子类返回适当的值:publicabstractStringgetType();如果你需要将某物的每个子类映射到一个值,而不需要实例化它,你可以创建一个publicstaticMap,String>t

java - 如何强制程序始终运行 while 循环的第一次迭代?

我正在编写一个程序来实现我在文献中找到的算法。在这个算法中,我需要一个while循环;while(solutionhaschanged){updateSolution();}为了检查while条件是否满足,我创建了一个名为copy的对象(与解决方案类型相同)。此副本是解决方案更新前的副本。因此,如果解决方案发生变化,则满足while循环中的条件。但是,在执行while循环时,我在为两个对象的条件找到最佳解决方案时遇到了一些问题,因为我从一个空解决方案(结果集)开始,并且当时副本也是空的(都调用了类的构造函数)。这意味着当执行while循环时,两个对象是相等的,因此不会执行while循环

java - 是否可以在没有对象到对象映射的情况下强制执行外键?

假设提供了以下映射:Java类:publicclassA{privatelongid;privateBentityB;//gettersandsettersskipped}是否可以更改Hibernate映射,以便Hibernate在启动时仍然强制执行和创建外键,但是类A看起来像下面这样:publicclassA{privatelongid;privatelongidOfB;//gettersandsettersskipped}我明白如果我转换进入这可行,但数据库不会强制执行外键。我需要这样做,因为对象B可能(或可能不会)单独初始化,这有时会导致org.hibernate.LazyIni

java - 有没有办法强制您切换 Java 中枚举的所有定义值?

这个问题在这里已经有了答案:Howtoensurecompletenessinanenumswitchatcompiletime?(13个答案)关闭5年前。假设您有一个包含3个值的枚举:enumColors{RED,GREEN,BLUE}你用某种方法切换它的所有值,认为你已经处理了所有情况:switch(colors){caseRED:...caseGREEN:...caseBLUE:...}然后,您向枚举添加一个新值:enumColors{RED,GREEN,BLUE,YELLOW}并且一切仍然可以正常编译,只是您在方法中默默地遗漏了YELLOW的大小写。在这种情况下有没有办法引发编