1

私は C 開発者ではなく、実際の C コードを実際に書くことについてはほとんど知らないということから始めましょう。Cコードのテストを書くために使用できるxUnitフレームワークを見つけるためにいくつかの調査を行ってきました.Unityのように見えることがわかったことに基づいています一緒に行きたい人です。簡単に思えますが、Unity の Web サイトから zip ファイルをダウンロードした後、どうすればよいかわかりません。通常の configure/make/make install がないようです。ただし、いくつかの rake タスクが同梱されていますが、いずれも「インストール」タスクのようには見えませんでした。最後の手段として、3 つのソース ファイルを自分のコードにコピーしようとしましたが (これが正しいことではないことを本当に願っています)、それを試みると、c ファイルを gcc でコンパイルしようとするとエラーが発生しますが、これは機能するはずだと思います。これが私のセットアップです:

src/
  mycode.c
  unity.c
  unity.h
  unity_internals.h

これが mycode.c のソースです

/* mycode.c */
#include "unity.h"

void test_sample(void)
{
    TEST_ASSERT_EQUAL_INT(0, 0);
}

実行すると、次のようgcc mycode.cになります。

Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
  "_UnityAssertEqualNumber", referenced from:
      _test_sample in ccyHByv6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

(gcc で unity.c をコンパイルしようとすると、同様のエラーが発生します)。これは、ユニティに同梱されているコードには、私が持っているものとは異なるコンパイラが必要であることを意味すると思います:

i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)

または、unity が 64 ビット プロセッサと互換性がない可能性があります... (私は 2.4 GHz Intel Core 2 Duo プロセッサを搭載した Mac OS 10.7.3 で実行しています。 XCode バージョン 4.3 (4E109) と XCode 用のコマンド ライン ツールを入手しました) この時点で、私はストローをつかんでいるだけで、頭がいっぱいです。

私の質問は、Unity などのサードパーティの C ライブラリを取得して、C コードで利用できるようにするための正しいプロセスは何ですか? Python や Ruby のようなものをインストールする必要がありますか、それとも Java などのようなものをパスに追加する必要がありますか? Unityのコードを私の仕事に落とし込むだけではいけませんか? 私は何か間違ったことをしていますか、それともUnityですか、それともその両方ですか? Unity を使用して C コードをテストできるようにしたいだけです。どんな助けでも大歓迎です。前もって感謝します!

4

2 に答える 2

1

私は自分の問題を理解しました。setupUnity では aと関数を定義する必要があることがわかりましたteardown。そうしないと、私が遭遇したのと同様のエラーが発生します。

于 2012-03-22T03:39:35.400 に答える
1

まず、「gcc *.c -o mytest」を試してください。これにより、すべての C ソース ファイルがオブジェクト ファイルにコンパイルされ、それらがバイナリ 'mytest' にリンクされます。すべての C ソース ファイルは、リンクする前にオブジェクト ファイルにコンパイルする必要があることに注意してください。(ライブラリは、パッケージ化されたオブジェクト ファイルの集まりです。)

/usr/lib に Unity ライブラリがインストールされている場合は、「gcc mycode.c -lunity -o mytest」のように実行できます。Unity ライブラリが現在のディレクトリにある場合は、「gcc mycode.c ./unity.a -o mytest」を実行できます。これは、現在のディレクトリで「unity.a」という名前のファイルを探すようにコンパイラに指示します。一部のライブラリは .so ファイル (Windows の DLL に似た「共有オブジェクト」ファイル) を構築します。その場合、「unity.a」を「unity.so」に置き換えるとうまくいくはずです。(ここでは Unix/Linux 環境を想定しています。)

Unity の代わりに、C コードで使用できる Google Test を見てください。Macでもサポートされていることは知っています。主な利点は、大規模で活発なコミュニティです。別の SO の質問からの Google Test の詳細: Is Google Test OK for testing C code?

于 2012-03-19T04:10:08.093 に答える