【发布时间】:2021-04-08 22:06:30
【问题描述】:
namespace Game.SoccerGame
[TestFixture]
public class Score_is_0_0 : SoccerGame
{
[SetUp]
public void SetUp()
{
GivenTheScoreIs(0,0);
}
[TearDown]
public void CleanUp()
{
}
[Test]
public void When_Team1_Scores()
{
WhenTeam1Scores();
Assert.That(ScoreOutput, Is.EqualTo("1:0"));
}
[Test]
public void When_Team2_Scores()
{
WhenTeam2Scores();
Assert.That(ScoreOutput, Is.EqualTo("0:1"));
}
}
Expected:
When_Team1_Scores() = 1:0
When_Team1_Scores() = 0:1
当我单独运行测试时,它们会按预期工作。 我遇到的问题是当我同时在课堂上运行测试时。当我这样做时,结果是:
When_Team1_Scores() = 1:0
When_Team1_Scores() = 1:1
ScoreOutput 在第一次测试后保持其状态,因此我的第二次测试失败
在 TearDown 的测试之间杀死状态的最佳方法是什么?
我在一个单独的 SoccerGame 类中拥有下面的对象,我继承该类来控制得分状态
public abstract class SoccerGame : IDisposable
private SetScore currentScore = new SetScore();
protected string ScoreOutput => currentScore.ToString();
public void Dispose()
{
}
我尝试使用 IDisposable,但它无法正常工作,或者我执行错误?
【问题讨论】:
-
你的测试类不应该继承被测试的类。每个测试都应该实例化一个正在测试的类的新实例。
标签: c# .net visual-studio unit-testing nunit