小编Rec*_*Eve的帖子

xUnit和测试的多个数据记录

我是UnitTesting的新手,并且有以下代码

public class PowerOf
{
    public int CalcPowerOf(int @base, int exponent) {
        if (@base == 0) { return 0; }
        if (exponent == 0) { return 1; }
        return @base * CalcPowerOf(@base, exponent - 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

我首先为它编写的单元测试(使用xUnit)就是这个,但是我不太确定它是否是正确的方法,或者我是否应该使用其他模式? 我想知道的是,这是否正确用于将多组数据传递到"单元测试" - 因为我没有在xUnit的文档上看到任何文档或参考示例?

    [Fact]
    public void PowerOfTest() {
        foreach(var td in PowerOfTestData()) {
           Assert.Equal(expected, CalcPowerOf(@base, exponent));
        }
    }

    public class TestData {
      int Base {get;set;}
      int Exponent {get;set;}
      int ExpectedResult {get;set;}
    }

    public List<TestData> PowerOfTestData() {
        yield return new TestData { …
Run Code Online (Sandbox Code Playgroud)

c# xunit

3
推荐指数
2
解决办法
2866
查看次数

单例和线程安全?

我目前正在开发一个“Singleton”类,但它必须承受线程安全,因为我不仅要访问,还要设置一些东西。lock(object)当我不知道它实际上在做什么以及我是否必须使每个方法线程安全时,感觉有点笨拙?

到目前为止,我有这个非线程安全代码 - 因为在每个线程中都应该访问相同的数据。我将如何最好地使其线程安全并保持单例?

public class AppSession() {
    private static AppSession _instance = new AppSession();
    public static AppSession Instance { get { return _instance; } }

    private AppSession() { }

    private string _actionName = "none";
    private DateTime? _actionTime = null;        
    public void ActionExecuted(string action) {
        _actionName = action ?? String.Empty;
        _actionTime = DateTime.UtcNow;
    }

    public LastAction {
       get { return $"{_action} at {_actionTime?.Value.ToString()}"; }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# singleton multithreading

3
推荐指数
1
解决办法
1727
查看次数

标签 统计

c# ×2

multithreading ×1

singleton ×1

xunit ×1