C#名称空间是否分层?
背景: 我正在开发一个测试框架,我有每个命名空间的设置夹具。例如命名空间A中的SetUpFixture和命名空间A.B。
中的一个实际问题:
如果我调用TestRunner.RunAllTestsInNamespace("A.B")
- 测试运行器是否应仅调用命名空间A.B中的SetUpFixture或命名空间A中的SetUpFixture?
(或者相反:如果我调用TestRunner.RunAllTestsInNamespace("A")
- 测试运行器是否也应该执行命名空间A.B中的所有测试?
答案 0 :(得分:2)
关于你的问题:
如果我调用TestRunner.RunAllTestsInNamespace(" A.B") - 测试运行器是否应仅调用命名空间A.B中的SetUpFixture或命名空间A中的SetUpFixture?
假设你有结构:
A.Setup1
A.Test1
A.B.Setup2
A.B.Test2
如果您在现有框架(例如NUnit)中进行一些简单测试,您会发现所遵循的行为似乎是:
A.Test1
执行A.Setup1
和A.Test1
A.B.Test2
执行A.Setup1
,A.B.Setup2
,A.B.Test2
这是NUnit的行为。其他人可能表现不同。
您可能希望完全调查并了解现有测试框架(NUnit,XUnit.Net,MSTest,其他)的行为。
答案 1 :(得分:1)
是。命名空间是分层的。
答案 2 :(得分:1)
是命名空间是分层的,但问题是API设计。我想由你来定义你想要实现的行为。
可以肯定的是,它是另一种方式(问题的第二种方式):运行(“A.B”)肯定不会在“A”中运行测试。因为A不包含在A.B中 - > A.B包含在A。
中为什么没有可选参数?
public void RunTests(string @namespace, bool runChildNamespaces = true)
使用此API设计: