3

私は約束します、私は読んだ: http://netbeans.org/kb/articles/freeform-config.html

Netbeans 7.2内のコンテキスト メニューに「Test Single File」ターゲットを含めるように変更したい Java フリーフォーム プロジェクトがあります。

含まれているリンクは、「test.single」という名前のアクションを作成することを概説しており (Netbeans の Test Single File コマンドをオーバーライドするため)、そのアクションの作成内で、ant ターゲットとコンテキスト オブジェクトを次のように指定する必要があります。

<context>
    <property>testclass</property>
    <folder>${current.dir}</folder>
    <pattern>\.java$</pattern>
    <format>java-name</format>
    <arity>
        <one-file-only/>
    </arity>
 </context>

要約すると、私は持っています:

ide-actions ブロック内の project.xml にアクションを作成しました。

<action name="test.single">                                     
  <target>test-single</target>

  <context>
      <property>testclass</property>
      <folder>${current.dir}</folder>
      <pattern>\.java$</pattern>
      <format>java-name</format>
      <arity>
          <one-file-only/>
      </arity>
  </context>
</action>

コンテキスト メニュー ブロックに ide-action を追加しました"

<ide-action name="test.single"/>

これを自由形式プロジェクトの project.xml ファイルに追加すると、プロジェクト名を右クリックすると、コンテキスト メニューにグレー表示された「test.single」エントリが表示されます。さらに、src/test ディレクトリのテスト クラスを右クリックすると、グレー表示された [Test Single File] エントリが表示されます。

私はxmlをチェックして検証しましたが、すべてチェックアウトしているようです。私は何が間違っているのでしょうか?

前もって感謝します!

4

1 に答える 1

1

同じ問題があり、nbproject/project.xml でアクション run.single を複製し、test.single を呼び出すことで解決できました。

<action name="test.single">
    <script>build.xml</script>
    <target>test-single</target>
    <context>
        <property>test.class</property>
        <folder>src/java</folder>
        <pattern>\.java$</pattern>
        <format>java-name</format>
        <arity>
            <one-file-only/>
        </arity>
    </context>
</action>

また、プロジェクトの build.xml で適切なテスト クラスを実行するために必要なため、プロパティを test.class に変更しました。

メインの build.xml には、ターゲットの test-single があります。

<target name="test-single" description="Run individual Unit tests" depends="compile, compile-test" >  
    <junit
        printsummary="yes"
        errorProperty="test.failed"
        failureproperty="test.failed"
        haltonfailure="yes" 
        fork="yes"
        showoutput="yes">
        <formatter type="plain" usefile="false"/>
        <classpath>
            <pathelement location="${build.base.classes.dir}" />
            <pathelement location="${unit.test.classes.dir}" />
            <pathelement location="${junit.dir}" />
        </classpath>
        <test name="${test.class}Test" todir="${results}">
        </test>
    </junit>
    <fail message="Tests failed!" if="test.failed"/>
</target>

はプロパティ ${test.class} を参照していることに注意してください。しかし、そのままにしておくと、JUnit テスト クラスではなく、テスト対象のクラスを実行しようとします。これは、最後に「Test」という単語を付けてテストされるクラスと常に同じように呼び出されるため、名前が ${test.class}Test になるように記述しました。

于 2013-07-11T19:53:16.073 に答える