2017-04-18 4 views
0

複数のコンポーネント(バージョン2.10)でネイティブアプリケーションをテストするためにクニットを使用する方法:複数のコンポーネントから作られた私はGradleのでネイティブCアプリケーションのためのGradleのプロジェクトを持っている

components { 

    component_1(NativeLibrarySpec) 
    component_2(NativeLibrarySpec) 
    ... 
    component_n(NativeLibrarySpec) 

    main_component(NativeExecutableSpec){ 
     sources { 
      c.lib library: "component_1", linkage: "static" 
      c.lib library: "component_2", linkage: "static" 
      ... 
      c.lib library: "component_n", linkage: "static" 
     } 

    } 
} 

アプリケーションを持っていることの主なアイデアこの形式では、個々のコンポーネントをより簡単にテストできるようになりました。しかし、私は2つの大きな問題を抱えています:

main_componentはアプリケーションであるため、主な機能を持っています。このエラーはmultiple definition of 'main' ... gradle_cunit_main.c:(.text+0x0): first defined hereです。これは予想するものであり、ドキュメントに記載されていますが、主なコンポーネントがテストに含まれないように、この問題を回避する方法があるかどうかは疑問です。これは、私は次のようにテストするコンポーネントを定義しようとすると文句(のGradleのバージョン2.10のように)次の質問

クニットプラグインに関連している:

testSuites { 
    component_1Test(CUnitTestSuiteSpec){ 
      testing $.components.component_1 
     } 
    } 
} 

のGradleは文句:

Cannot create 'testSuites.component_1Test' using creation rule 'component_1Test(org.gradle.nativeplatform.test.cunit.CUnitTestSuiteSpec) { ... } @ build.gradle line 68, column 9' as the rule 'CUnitPlugin.Rules#createCUnitTestSuitePerComponent > create(component_1Test)' is already registered to create this model element

要約すると、私はcunitプラグインにいくつかのコンポーネントだけをテストし、主なコンポーネントをテストのためにコンパイルしないように指示したいと思います。繰り返しますが、私はgradle 2.10を使用しており、最新のバージョンにアップグレードすることはできませんので、私たちのCIツールチェーンを壊すでしょう。

ご迷惑をおかけして申し訳ありません。

答えて

0

コンポーネントのユニットテストを許可するが、メインプログラムのユニットテストを禁止するプロジェクトを構成する方法は次のとおりです。サブプロジェクトのコンポーネントを分割し、サブプロジェクトにcunitプラグインを適用します。

project(':libs'){ 
apply plugin: 'c' 
apply plugin: 'cunit' 
model{ 

    repositories { 
     libs(PrebuiltLibraries) { 
      cunit { 
       headers.srcDir "/usr/include/" 
        binaries.withType(StaticLibraryBinary) { 
         staticLibraryFile = file("/usr/lib/x86_64-linux-gnu/libcunit.a") 
        } 
      } 
     } 
    } 

    components { 
     component_1(NativeLibrarySpec) 
     component_2(NativeLibrarySpec) 
     ... 
     component_n(NativeLibrarySpec) 
    } 

    binaries { 
     withType(CUnitTestSuiteBinarySpec) { 
      lib library: "cunit", linkage: "static" 
     } 
    } 
} 
} 
apply plugin: 'c' 
model { 
    components{ 
     myprogram(NativeExecutableSpec) { 
      sources.c { 
       lib project: ':libs', library: 'component_1', linkage: 'static' 
       lib project: ':libs', library: 'component_2', linkage: 'static' 
       lib project: ':libs', library: "component_n", linkage: 'static' 
       source { 
        srcDir "src/myprogram/c" 
          include "**/*.c" 
       } 
      } 
     } 
    } 
} 
関連する問題