c# - 单元测试方法独立性

标签 c# java unit-testing

所以,我不完全确定这是真的:

[TestClass]
public class UnitTest1
{
    private int i = 0;

    [TestMethod]
    public void TestMethod1()
    {
        Thread.Sleep(5000);
        Assert.IsTrue(i == 10);
    }

    [TestMethod]
    public void TestMethod2() {
        i = 10;
    }
}

从测试结果来看,好像不是,但我想确定的是,如果我在测试方法上定义了一个全局变量,其他测试方法就无法读取它。

另外,我是否必须定义

    [TestCleanup]
    public void Test_Cleanup() {
        engine = null;
    }

因为这个

    [TestInitialize]
    public void Test_Initialize()
    {
        var pieceGeneratorMock = new Mock<IPieceGenerator>();
        pieceGeneratorMock.Setup(pg => pg.Generate())
            .Returns(new Piece(Color.Red));
        IPieceGenerator pieceGenerator = pieceGeneratorMock.Object;

        Size size = new Size(4, 4);
        BackgroundBoard backgroundBoard = new BackgroundBoard(size);
        PieceBoard pieceBoard = new PieceBoard(size);
        engine = new Engine(pieceGenerator, backgroundBoard, pieceBoard);
    }

?

最佳答案

至少在 JUnit 中,每个测试方法都是在 TestCase 的一个单独实例上调用的。您可以通过在每个测试* 方法中输出/记录 this 的身份散列来自行验证这一点。

关于c# - 单元测试方法独立性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3417408/

相关文章:

javascript - 为什么需要使用 jasmine 的 runs 和 waitFor 函数?

c# - 使用 Linq 在对象集合上运行一个方法?

c# - JSON反序列化可变数量的属性

c# - InitializeComponent 在当前上下文中不存在,使用 Mono C# 编译器

c# - 检查两个数字中每个对应数字的总和是否相同?

java - 使用 toHexString 解析 Long 时如何删除前导 "f"

java - Netbeans 8.1 中缺少测试覆盖率?

java - 以编程方式为登录 JSF 网站的用户分配安全角色

java - 删除 JTable 中选定的复选框行(单个和多个)

unit-testing - NerdDinner 中的依赖注入(inject) - 实际测试您的存储库或模型