在NetBeans中构建JUnit测试以用于较旧的Java版本

时间:2012-11-01 16:50:08

标签: java maven netbeans netbeans-plugins

我正在使用带有Maven(4.0.5)的NetBeans 6.5 IDE(Build 090226)在Fedora系统上使用Java(1.6.0_06)开发Java软件。

我正在对一些遗留代码进行更新,我想为它构建一个测试(使用JUnit)。该代码与Java 1.5一起使用。为了以最快,最简单的方式提供测试数据,我想通过扩展ResultSet接口来实现一个简单的模拟数据集。问题是,尽管我的项目设置为使用JDK 1.5进行构建和测试:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
 <configuration>
    <source>1.5</source>
    <target>1.5</target>
    <fork>true</fork>
    <executable>/usr/java/jdk1.5.0_14/bin/javac</executable>
    <compilerVersion>1.5</compilerVersion>
  </configuration>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <!-- snip some non-jvm configuration -->
    <jvm>/usr/java/jdk1.5.0_14/bin/java</jvm>
    <forkMode>once</forkMode>
  </configuration>
</plugin>

编辑器仍然想让我的类抽象,因为它认为我缺少Java 1.6 ResultSet中存在的方法,但它们使用Java 1.5中不存在的类(NClob和RowId和SQLXML)。

我的编译器插件似乎设置正确 - 我可以成功构建并运行此JUnit测试,但我的整个源代码树显示错误图标(有效屏蔽任何真正的错误)。如果我在ResultSet导入语句中使用'Go To Source'功能(或'Go To Declaration'),它会将我带到Java 1.6源zip,但是在方法上响应'无法在这里执行Go To Source'。

我错过了什么?如何让NetBeans编辑器窗口识别出此代码使用的是1.5 JDK,而不是JDK NetBeans的启动?

TIA, 丙基三甲氧基硅烷

2 个答案:

答案 0 :(得分:0)

使用Maven编译器插件不会影响Netbeans项目的编译器设置。

查看项目属性,您可以将源/二进制格式设置为您需要的版本。但请注意,这不会隐藏仅在IDE中设置的Java平台版本中可用的方法(最近很可能是1.6)。这可能是有问题的,例如IOException构造函数接受原因,以及Java 1.6或更高版本引入的其他API扩展。

当设置为1.5时,Netbeans会愉快地编译此代码,但它确实不会在1.5 JVM上运行。因此,要确保您还必须安装1.5 JDK,将其添加到您的平台列表(工具 - &gt;平台)并使用它来编译您的项目。作为额外的奖励,当使用正确的JDK时,NetBeans会在编辑器窗口中标记缺少的IOException构造函数。

答案 1 :(得分:0)

使用以下内容将'profile.xml'('Project Files'下的菜单选项'添加到主项目中,解决了我的问题:

<profiles>
  <profile>
    <id>netbeans-private</id>
    <properties>
      <netbeans.hint.jdkPlatform>JDK_1.5</netbeans.hint.jdkPlatform>
    </properties>
  </profile>
</profiles>

感谢andih的鼓励支持让我一直在寻找答案。

丙基三甲氧基硅烷