各テストで必要な高価なものがあります。 テスト間で状態を共有する方法(環境変数、ファイルなど)を外部に保存する方法はありませんか?#[テスト] sの間で動的な状態を共有する
Stainlessはbefore_each
という名前のセットアップマクロなものを持っている、と私は同じようなことを考えて、shared_values
を言うが、その変数のすべてのテストにアクセスできるようになり、そしてそれはまた、テストの開始時に(一度走ったことになりますよスイート)。
各テストで必要な高価なものがあります。 テスト間で状態を共有する方法(環境変数、ファイルなど)を外部に保存する方法はありませんか?#[テスト] sの間で動的な状態を共有する
Stainlessはbefore_each
という名前のセットアップマクロなものを持っている、と私は同じようなことを考えて、shared_values
を言うが、その変数のすべてのテストにアクセスできるようになり、そしてそれはまた、テストの開始時に(一度走ったことになりますよスイート)。
テストに関することは何もありません。それらは複数のスレッドで実行される「単なる」関数です。 create a global mutable singleton:したがって、一つの解決策は、あなたが他のコードの場合と同じことをしている
#[macro_use]
extern crate lazy_static;
lazy_static! {
static ref DATABASE: String = {
format!("{}{}", "This was", " expensive")
};
}
#[test]
fn one() {
println!("{}", *DATABASE);
}
#[test]
fn two() {
println!("{}", *DATABASE);
}
テストフレームワークは、コールバック「後」のためのフックを提供していないので、このリソースをクリーンアップするために何の素敵な道はありません。私はDrop
がlazy_static変数に対しても呼び出されているとは思わない。
注: 'Drop'が' lazy_static'変数に対して呼び出されないことを確認します。 valgrind * will * complain :) –
@MatthieuM。友人の間でもう一つのメモリリークは何ですか?深刻なことに、Valgrindに意図的に1つのリークを試みているが、他の偶発的なリークについて警告を受けたい場合は、いつでも抑制を追加できます。 – Shepmaster
私の場合、いくつかのWebベースのAPIに対してテストを実行したいので、各テストで使用するログイントークンを取得する必要があります(各API呼び出しで使用されます)。 – Tshepang