c# – 使用全局变量的单元测试方法
发布时间:2020-12-16 01:55:40 所属栏目:百科 来源:网络整理
导读:可以说我有以下类结构: private string GlobalVariable = "foo";public void MainMethod(){ string bar = Baz();}public string Baz(){ return GlobalVariable + "qux";} 我希望使用GlobalVariable的不同值对Baz()进行单元测试.但是,由于GlobalVariable只是
可以说我有以下类结构:
private string GlobalVariable = "foo"; public void MainMethod() { string bar = Baz(); } public string Baz() { return GlobalVariable + "qux"; } 我希望使用GlobalVariable的不同值对Baz()进行单元测试.但是,由于GlobalVariable只是在方法中调用,而不是作为参数传递给它,我无法在单元测试方法中设置它. 因此我考虑将我的结构改为: private string GlobalVariable = "foo"; public void MainMethod() { string bar = Baz(GlobalVariable); } public string Baz(string globalVar) { return globalVar + "qux"; } 这样我现在可以在单元测试中更改参数值globalVar,以便检查不同的输出. 但是,我的第一个结构更清晰,因为我没有不必要地将变量值作为参数传递给方法. 有没有办法充分利用这两个世界,而不必为了进行单元测试而妨碍我的结构? 解决方法
我会想要一个单独的重载方法,然后我可以有一个参数和一个没有…
public string Baz() { return Baz(GlobalVariable); } public string Baz(string globalVar) { return globalVar + "qux"; } 这里的好处是你仍然有你的无参数方法,可以从代码中调用,而不必担心每次都指定值,但是你有测试的重载,并且在你需要使用的情况下不同的价值. 虽然你仍然无法使用不同的值测试第一种方法,但我认为假设仅测试第二种功能就足够了. 或者,如果您使用的是C#4.0,则可以使用optional parameters: public string Baz(string globalVar = null) { if(string.IsNullOrEmpty(globalVar)) globalVar = GlobalVariable; return globalVar + "qux"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |