2012-03-19 10 views
1

私はCの開発者ではなく、実際には実際のC言語のコードを書くことはほとんど分かりません。私は、Cコードのテストを書くために使うことができるxUnitフレームワークを見つけるためにいくつかの調査をしてきました。そして、私が見たいものに基づいて、Unityは私が一緒に行きたいと思っています。シンプルだけど、Unityのウェブサイトからzipファイルをダウンロードした後は、どうすればいいのか分かりません。それは通常のconfigure/make/makeインストールを持っていないようです。もしそうなら、私はとにかく使用しているはずです。しかし、いくつかのレーキタスクが含まれていますが、それらのどれも「インストール」タスクのようには見えませんでした。最後の手段として、私は3つのソースファイルを自分のコードでコピーしようとしましたが(本当にうまくいけばいいと思っています)、gccで自分のcファイルをコンパイルしようとするとエラーが発生します。私はこれがうまくいくはずだと思います。ここに私のセットはアップしている:Mac(Lion)で単体テストCコードに「ユニティ」を使用するにはどうすればよいですか?

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

ここで私はgcc mycode.cを実行すると、私は取得がmycode.c

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

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

のソースです:

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 

ときI(Iは、同様のエラーを取得するには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) 

または多分団結は64ビットプロセッサと互換性がないこと:どの私は団結に付属している私が持っているものとは異なるコンパイラを必要とするコードを意味仮定しますMacOS 10.7.3と2.4 GHz Intel Core 2 Duoプロセッサ - もう一つは、XCodeバージョン4.3(4E109)とXCode用のコマンドラインツールがあるということです。ストローで握るだけで、私は頭の中にいる。

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

答えて

1

私は自分の問題を理解しました。 1つには、setupteardownという関数を定義する必要があります。そうでない場合は、実行していたのと同じようなエラーが表示されます。

1

まず、 'gcc * .c -o mytest'を試してください。これは、すべてのCソースファイルをオブジェクトファイルにコンパイルし、それらを一緒にバイナリ 'mytest'にリンクします。すべてのCソースファイルを一緒にリンクする前に、オブジェクトファイルにコンパイルする必要があることに注意してください。

/usr/libに単一ライブラリがインストールされている場合は、 'gcc mycode.c -lunity -o mytest'のようにすることができます(ライブラリはパッケージ化されたオブジェクトファイルの束です)。現在のディレクトリにユニティライブラリがある場合は、 '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テストの詳細:Is Google Test OK for testing C code?

+0

私は 'gcc * .c -o mytest'を試みましたが、まだ "x86:x86アーキテクチャでは見つからない" ld:シンボルがあります。それがインストールされているとして、私はそれを構築するように見えないので、その点に到達する方法はわかりません。 –

関連する問題