C# 名称空间是分层的吗?

C# 名称空间是分层的吗?,c#,C#,C#名称空间是分层的吗 背景: 我正在开发一个测试框架,我有每个名称空间的设置装置。e、 g.命名空间a中有一个SetUpFixture,命名空间a.B中有一个SetUpFixture 实际问题: 如果我调用TestRunner.RunAllTestsInNamespace(“A.B”)-测试运行程序应该只调用命名空间A.B中的SetUpFixture还是同时调用命名空间A中的SetUpFixture (或者反过来说:如果我调用TestRunner.RunAllTestsInNamespace(

C#名称空间是分层的吗

背景: 我正在开发一个测试框架,我有每个名称空间的设置装置。e、 g.命名空间a中有一个SetUpFixture,命名空间a.B中有一个SetUpFixture

实际问题: 如果我调用
TestRunner.RunAllTestsInNamespace(“A.B”)
-测试运行程序应该只调用命名空间A.B中的SetUpFixture还是同时调用命名空间A中的SetUpFixture


(或者反过来说:如果我调用
TestRunner.RunAllTestsInNamespace(“A”)
-测试运行者是否也应该执行命名空间A.B中的所有测试?

是的。命名空间是分层的。

是的。命名空间是分层的。

是的命名空间是分层的,但问题是API设计。我想由您定义要实现的行为

可以肯定的是,这是另一种方式(问题的第二种方式):Run(“A.B”)肯定不应该在“A”中运行测试。因为A不包含在A中。B-->A.B包含在A中

为什么没有一个可选的参数呢

public void RunTests(string @namespace, bool runChildNamespaces = true)
使用此API设计:

  • 实现只是稍微复杂一点
  • 你获得了一些灵活性
  • 对于调用该方法的编码人员来说,预期的行为非常清楚

是的,名称空间是分层的,但问题是API设计。我想应该由您定义要实现的行为

可以肯定的是,这是另一种方式(问题的第二种方式):Run(“A.B”)肯定不应该在“A”中运行测试。因为A不包含在A中。B-->A.B包含在A中

为什么没有一个可选的参数呢

public void RunTests(string @namespace, bool runChildNamespaces = true)
使用此API设计:

  • 实现只是稍微复杂一点
  • 你获得了一些灵活性
  • 对于调用该方法的编码人员来说,预期的行为非常清楚

关于您的问题:

如果我调用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、XUnit.Net、MSTest等)的行为。

关于您的问题:

如果我调用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、XUnit.Net、MSTest等)的行为。

相关:@Jon:您的答案没有反映在newStackExchangeInstance指出的问题中。您确定您的答案正确吗?[Jon已删除其评论]@newStackExchangeInstance:由于它们看起来是分层的,您是否建议在当前名称空间和以上名称空间中执行所有SetupFixture?不确定您的意思,是否可以尝试重新编写该问题?(您最后的评论)。名称空间是分层的。似乎还有一个与测试相关的完全不同的问题,但我看不到,因为我的大脑一直在看第一句话,并回答“是的。现在转到其他人的问题。”相关:@Jon:你的答案没有反映在newStackExchangeInstance指出的问题中。你确定你的答案是正确的吗?[Jon删除了他的评论]@newStackExchangeInstance:由于它们看起来是分层的,您是否建议在当前名称空间和以上名称空间中执行所有SetupFixture?不确定您的意思,是否可以尝试重新编写该问题?(您最后的评论)。名称空间是分层的。似乎还有一个与测试相关的完全不同的问题,但我看不到,因为我的大脑一直在看第一句话,并回答“是的。现在转到其他人的问题。”我认为他的方法签名非常适合递归。我认为他的方法签名非常适合递归。