1

私のユースケースは、TeamCity http://www.jetbrains.com/teamcity/を使用していくつかのプロジェクトを構築し、それらに対してテストを実行することです。

私のテストでは、.net プロセスを作成し、7 を返す python メソッド (RPyC 経由) で実行します。

exit(7)

私のプロセスが終了するとき、彼の終了コードは7になると思います.これは実際にプロセスが終了コード7で終了することを意味します.

Assert(7, p.ExitCode)

しかし...他のコンピューターで同じユースケースを実行すると、テストが実行され、プロセスに7が返されますが、プロセスのリターンコードが7ではなく常に0であり、Assertメソッドがfalseを返すため、テストは失敗しました。

プロセスが何らかの理由で失敗したとしても、彼の終了コードは -1 またはその他のゼロ以外の整数であり、0 ではないはずだと思ったので、なぜこれが起こるのか何か提案はありますか?

同じコードが他のコンピューターでも機能するため、テスト環境に何らかの問題があるに違いありません。

コンピュータの違い:

良いもの (物理コンピューター): CPU: Intel xeon E5440 2.83 GHz RAM: 2 GB OS: Win7 32 ビット

悪い (仮想コンピューター): CPU: Intel xeon X5680 3.33 GHz (2 プロセッサ) RAM: 3.5 GB OS: Win7 Service pack 1 32 ビット

エティッド:

私が失敗したコンピューターでは、シェルの実行時に次のエラーが発生するという問題がありました:「UNCパスはサポートされていません」. これは、シェルがネット パスであるデスクトップ パスで開かれたために発生しました。次に、パスがデフォルト パス c:\windows に変更されました。しかし、ここで奇妙なのは、プロセスが正常に実行され続け、例外が発生せず、exid コードが 1 または -1 ではなく 0 であるため、なぜこれが発生するのかまだわかりません

4

1 に答える 1

0

同じコードが他のコンピューターでも機能するため、テスト環境に何らかの問題があるに違いありません。

最も可能性の高い原因は、多くの場合、環境 ( で遭遇する可能性があるようなものos.environ) と競合状態です。簡単なことから始めましょう: 両方の場所で実行環境を比較します。

于 2013-06-10T14:35:18.123 に答える