0

毎日2回自動ツイートするアプリを作りました。ここで、テスト ファイルを作成するように指示されました。

ツイート自体は、文字列とデータベースからのデータによって生成されます。

String actual = genTweet();        
String expected = "Company Most Active ($Vol. in Millions) | SCZZL $19.5 | HUTC $18.1 | TSCDY $18.0 | TOELY $16.2 | GBGM $15.7 | More at: http://www.website.com/home";
assertEquals(expected, actual);

私は考えています、どうやってこれをテストするのですか?ドルの値と記号は常に変化するため、毎回実際の != が期待されます。

どんな提案でも大歓迎です!!!

4

3 に答える 3

2

通常、運用サーバーに対してテストを実行することはありません。代わりに、予測可能なデータを完全に制御できるテスト サーバーを使用してください。

于 2012-06-22T20:39:06.963 に答える
1

一致するが変数部分を除外する正規表現はどうですか。

于 2012-06-22T20:37:50.670 に答える
0

これがあなたの機能だとしましょうgenTweet()

public String getTweet(List<Activity> activities) {
  String tweetText = "Company Most Active ($Vol. in Millions)";
  for (Activity activity : activities) {
    tweetText = String.format("%s | %s $%.02f", tweetText, activity.getCompanyName(), activity.getMoney());
  }
  return tweetText;
}

genTweet()これで、関数が使用する情報を制御できるようになりました。本番環境では、データベースまたはその他のストレージ エンジンからデータが取り込まれます。開発モードでは、ローカル データベース スナップショットから。

テスト中に、通常はsetUp()メソッドにそれらを設定します。

// setUp()
List<Activity> activities = new List();
activities.add(new Activity("A", 1.10));
activities.add(new Activity("B", 2.209));

// Expected
String expected = "Company Most Active ($Vol. in Millions) | A $1.10 | B $2.21";

// Real
String real = genTweet(activities);

assertEquals(expected, real);

私はMock Objectsについて話すつもりでした。しかし、これは別の直感的な方法です。

于 2012-06-22T21:01:55.677 に答える