Questions tagged «unit-testing»

单元测试是一种测试源代码的各个单元以确定它们是否适合使用的方法。



18
Python单元测试去哪儿了?
如果您正在编写库或应用程序,则单元测试文件会放在哪里? 将测试文件与主应用程序代码分开是很好的选择,但是将它们放在应用程序根目录内的“ tests”子目录中是很尴尬的,因为这使得导入要测试的模块更加困难。 这里有最佳实践吗?


6
进行单元测试时使用C#“内部”访问修饰符
我是单元测试的新手,我想弄清楚是否应该开始使用更多的“内部”访问修饰符。我知道,如果我们使用“内部”并设置汇编变量“ InternalsVisibleTo”,那么我们可以测试我们不想从测试项目中声明为公共的函数。这使我认为我应该始终使用“内部”,因为至少每个项目(应该?)都有它自己的测试项目。你们能告诉我为什么我不这样做的原因吗?我什么时候应该使用“私人”?
469 c#  .net  unit-testing  tdd 


14
如何对抽象类进行单元测试:使用存根扩展?
我想知道如何对抽象类以及扩展抽象类的单元进行单元测试。 我是否应该通过扩展抽象类,对抽象方法进行存根测试,然后测试所有具体方法来测试抽象类?然后只测试覆盖的方法,并在单元测试中测试扩展我的抽象类的对象的抽象方法? 我是否应该有一个抽象测试用例,可用于测试抽象类的方法,并在我的测试用例中为扩展抽象类的对象扩展该类? 请注意,我的抽象类具有一些具体方法。

6
Mockito能否捕获多次调用的方法的参数?
我有一个被调用两次的方法,并且我想捕获第二个方法调用的参数。 这是我尝试过的: ArgumentCaptor<Foo> firstFooCaptor = ArgumentCaptor.forClass(Foo.class); ArgumentCaptor<Foo> secondFooCaptor = ArgumentCaptor.forClass(Foo.class); verify(mockBar).doSomething(firstFooCaptor.capture()); verify(mockBar).doSomething(secondFooCaptor.capture()); // then do some assertions on secondFooCaptor.getValue() 但是我得到一个TooManyActualInvocations例外,因为Mockito认为doSomething应该只调用一次。 如何验证第二个调用的参数doSomething?

18
如何在JUnit4中按特定顺序运行测试方法?
我想执行带有注释的测试方法 @Test以特定顺序。 例如: public class MyTest { @Test public void test1(){} @Test public void test2(){} } 我想确保每次运行test1()前test2()都运行MyTest,但是找不到类似的注释@Test(order=xx)。 我认为对于JUnit来说这是非常重要的功能,如果JUnit的作者不希望使用订单功能,为什么呢?


7
NUnit与MbUnit与MSTest与xUnit.net
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 .NET有很多单元测试框架。我发现了这个小的功能比较:http : //xunit.github.io/docs/comparisons.html 现在,我要为我们选择最佳的。但是如何?有关系吗?哪一个是最有前途的证据,并且其发展势头良好?我应该关心这些功能吗?虽然xUnit似乎是最现代的并且是专门为.NET设计的,但NUnit似乎再次被广泛接受。MSTest再次已经集成到Visual Studio中...

10
Python单元测试-与assertRaises相反吗?
我想编写一个测试来确定在给定的情况下不引发异常。 测试是否引发异常很简单 ... sInvalidPath=AlwaysSuppliesAnInvalidPath() self.assertRaises(PathIsNotAValidOne, MyObject, sInvalidPath) ...但是你怎么做相反。 像这样的东西我在追求... sValidPath=AlwaysSuppliesAValidPath() self.assertNotRaises(PathIsNotAValidOne, MyObject, sValidPath)

11
用Mockito模拟静态方法
我已经写了一家工厂来生产java.sql.Connection物体: public class MySQLDatabaseConnectionFactory implements DatabaseConnectionFactory { @Override public Connection getConnection() { try { return DriverManager.getConnection(...); } catch (SQLException e) { throw new RuntimeException(e); } } } 我想验证传递给的参数DriverManager.getConnection,但不知道如何模拟静态方法。我在测试用例中使用的是JUnit 4和Mockito。有没有模拟或验证此特定用例的好方法?

4
有条件地忽略JUnit 4中的测试
好的,因此@Ignore注释非常适合标记不应运行测试用例。 但是,有时我想忽略基于运行时信息的测试。例如,如果我有一个并发测试需要在具有一定数量内核的计算机上运行。如果此测试是在单处理器计算机上运行的,那么我认为仅通过测试是不正确的(因为尚未运行),并且通过测试并破坏构建肯定不是正确的选择。 因此,我希望能够在运行时忽略测试,因为这似乎是正确的结果(因为测试框架将允许构建通过,但记录未运行测试)。我相当确定注释不会给我这种灵活性,并且怀疑我需要为相关类手动创建测试套件。但是,文档中没有提及任何内容,并且通过API查看还不清楚如何以编程方式完成此操作(即,如何以编程方式创建Test与@Ignore注释所创建的实例相同的实例或类似实例?)。 如果有人在过去做过类似的事情,或者对我还能做些什么有一个聪明的主意,那么我很乐意听到。

30
我应该测试私有方法还是仅测试公共方法?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 我已阅读这篇文章如何测试私有方法。我通常不测试它们,因为我一直认为仅测试将从对象外部调用的公共方法会更快。您是否测试私有方法?我应该一直测试它们吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.