gpt4 book ai didi

unit-testing - 具有具体类作为返回类型的单元测试工厂方法

转载 作者:行者123 更新时间:2023-12-03 08:36:17 24 4
gpt4 key购买 nike

所以我有一个工厂类,我正在尝试找出单元测试应该做什么。从此question我可以验证返回的接口(interface)是否属于我所期望的特定具体类型。

如果工厂返回具体类型,我应该检查什么(因为目前不需要使用接口(interface))?目前我正在做类似以下的事情:

[Test]
public void CreateSomeClassWithDependencies()
{
// m_factory is instantiated in the SetUp method
var someClass = m_factory.CreateSomeClassWithDependencies();

Assert.IsNotNull(someClass);
}

问题在于 Assert.IsNotNull似乎有些多余。

此外,我的工厂方法可能正在设置该特定类的依赖项,如下所示:

public SomeClass CreateSomeClassWithDependencies()
{
return new SomeClass(CreateADependency(), CreateAnotherDependency(),
CreateAThirdDependency());
}

我想确保我的工厂方法正确设置了所有这些依赖项。有没有其他方法可以做到这一点,然后使这些依赖 public/internal然后我在单元测试中检查的属性? (我不喜欢修改测试对象以适应测试)

编辑:为了回答罗伯特哈维的问题,我使用 NUnit 作为我的单元测试框架(但我不会想到它会产生太大的影响)

最佳答案

通常,创建可用于基于状态的测试的公共(public)属性并没有错。是的:这是您为启用测试场景而创建的代码,但它会损害您的 API 吗?是否可以想象其他客户以后会发现相同的属性有用?

特定于测试的代码和测试驱动设计之间有一条细线。我们不应该引入除了满足测试要求之外没有其他潜力的代码,但是引入遵循普遍接受的设计原则的新代码是完全可以的。我们让测试驱动我们的设计——这就是我们称之为 TDD 的原因 :)

在我看来,向一个类添加一个或多个属性以使用户更好地检查该类通常是合理的做法,因此我认为您不应该拒绝引入此类属性。

除此之外,我第二次回答纳德的回答:)

关于unit-testing - 具有具体类作为返回类型的单元测试工厂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1061552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com