Questions tagged «unit-testing»

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

6
如何编写接口的junit测试?
为接口编写junit测试,以便可以将它们用于具体的实现类的最佳方法是什么? 例如,您具有此接口并实现类: public interface MyInterface { /** Return the given value. */ public boolean myMethod(boolean retVal); } public class MyClass1 implements MyInterface { public boolean myMethod(boolean retVal) { return retVal; } } public class MyClass2 implements MyInterface { public boolean myMethod(boolean retVal) { return retVal; } } 您将如何针对该接口编写测试,以便可以将其用于类? 可能性1: public …

5
如何在Python2.7中的unittest中显示由assertRaises()捕获的错误消息?
为了确保来自我的模块的错误消息是有用的,我想查看assertRaises()捕获的所有错误消息。今天,我对每个assertRaises()都这样做,但是由于测试代码中有很多代码,因此变得非常乏味。 如何打印所有assertRaises()的错误消息?我研究了http://docs.python.org/library/unittest.html上的文档,但没有弄清楚如何解决它。我可以以某种方式猴子断言assertRaises()方法吗?我宁愿不更改测试代码中的所有assertRaises()行,因为我最经常以标准方式使用测试代码。 我猜这个问题与Python unittest有关:如何在Exceptions中测试参数? 我今天就是这样做的。例如: #!/usr/bin/env python def fail(): raise ValueError('Misspellled errrorr messageee') 和测试代码: #!/usr/bin/env python import unittest import failure class TestFailureModule(unittest.TestCase): def testFail(self): self.assertRaises(ValueError, failure.fail) if __name__ == '__main__': unittest.main() 要检查错误消息,我只需将assertRaises()中的错误类型更改为例如IOError。然后我可以看到错误消息: E ====================================================================== ERROR: testFail (__main__.TestFailureModule) ---------------------------------------------------------------------- Traceback (most recent call last): File "test_failure.py", line 8, in testFail self.assertRaises(IOError, …

9
Python unittest.TestCase执行顺序
Python中是否有一种方法unittest可以设置测试用例的运行顺序? 在我当前的TestCase课程中,一些测试用例具有一些副作用,这些条件为其他测试用例的正常运行设置了条件。现在,我意识到执行此操作的正确方法是使用它setUp()来完成所有设置工作,但是我想实现一个设计,其中每个连续的测试都会建立更多下一个可以使用的状态。我觉得这更优雅。 class MyTest(TestCase): def test_setup(self): #do something def test_thing(self) #do something that depends on test_setup() 理想情况下,我希望测试按照它们在类中出现的顺序运行。看来它们按字母顺序运行。

20
Django测试运行程序未找到测试
我是Python和Django的新手,我正在通过创建饮食管理网站来学习,但是我因运行单元测试而被彻底击败。我发现的所有文档和博客都说,只要可以从tests.py中发现它们,tests.py与models.py以及您的测试类的子类TestCase都位于同一文件夹中,则它们都应该自动被拾取。这对我manage.py test <myapp>不起作用,运行时找不到任何测试。 我将所有测试放在他们自己的程序包中,但是将其简化为仅包含在我的tests.py文件中的所有测试。当前的tests.py看起来像: import unittest from pyDietTracker.models import Weight from pyDietTracker.weight.DisplayDataAdapters import DisplayWeight class TestDisplayWeight(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def testGetWeightInStone_KG_Correctly_Converted(self): weight = Weight() weight.weight = 99.8 testAdapter = DisplayWeight(weight) self.assertEquals(testAdapter.GetWeightInStone(), '15 st 10 lb') 我也通过子类化Django TestCase类进行了尝试,但这也不起作用。我正在使用Django 1.1.1,Python 2.6,并且正在运行Snow Leopard。 我确定我缺少一些非常基本和显而易见的东西,但是我无法解决。有任何想法吗? 编辑:评论后只是快速更新 INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', …

6
如何在Spark 2.0+中编写单元测试?
我一直在尝试找到一种合理的方法来SparkSession使用JUnit测试框架进行测试。尽管似乎有很好的示例SparkContext,SparkSession但即使在spark-testing-base的内部多个地方使用了相应的示例,我也无法弄清楚该示例如何工作。如果不是真正正确的方法,我很乐意尝试一种不使用基于火花测试的解决方案。 简单的测试用例(带有的完整MWE项目build.sbt): import com.holdenkarau.spark.testing.DataFrameSuiteBase import org.junit.Test import org.scalatest.FunSuite import org.apache.spark.sql.SparkSession class SessionTest extends FunSuite with DataFrameSuiteBase { implicit val sparkImpl: SparkSession = spark @Test def simpleLookupTest { val homeDir = System.getProperty("user.home") val training = spark.read.format("libsvm") .load(s"$homeDir\\Documents\\GitHub\\sample_linear_regression_data.txt") println("completed simple lookup test") } } 用JUnit运行它的结果是在负载线处有一个NPE: java.lang.NullPointerException at SessionTest.simpleLookupTest(SessionTest.scala:16) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at …

12
关于MVC验证的单元测试
在MVC 2 Preview 1中使用DataAnnotation验证时,如何在验证实体时测试控制器操作是否将正确的错误放入ModelState中? 一些代码来说明。一,动作: [HttpPost] public ActionResult Index(BlogPost b) { if(ModelState.IsValid) { _blogService.Insert(b); return(View("Success", b)); } return View(b); } 这是一个失败的单元测试,我认为应该通过但不能(使用MbUnit和Moq): [Test] public void When_processing_invalid_post_HomeControllerModelState_should_have_at_least_one_error() { // arrange var mockRepository = new Mock<IBlogPostSVC>(); var homeController = new HomeController(mockRepository.Object); // act var p = new BlogPost { Title = "test" }; …

5
将测试文件导入JUnit的简单方法
有人可以建议一种简单的方法来在junit测试类中获取对文件的引用作为String / InputStream / File / etc类型对象吗?显然,我可以将文件(在这种情况下为xml)粘贴为巨型String或将其作为文件读取,但是是否有像这样的Junit专用快捷方式? public class MyTestClass{ @Resource(path="something.xml") File myTestFile; @Test public void toSomeTest(){ ... } }


2
ReSharper错误:“输出已达到限制并被截断。要查看完整的输出,请使用“在新窗口中显示堆栈跟踪”操作。”
在ReSharper中运行单元测试时,如果输出太长,则会出现此错误: The output has reached the limit and was truncated. To view the full output use 'Show Stack Trace in a new window' action. 更新资料 ReSharper在2016.2中修复了此问题,请参阅@Alexander Pacha的回答。

5
如何使用构造函数依赖项注入对asp.net核心应用程序进行单元测试
我有一个使用应用程序的startup.cs类中定义的依赖项注入的asp.net核心应用程序: public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["Data:FotballConnection:DefaultConnection"])); // Repositories services.AddScoped<IUserRepository, UserRepository>(); services.AddScoped<IUserRoleRepository, UserRoleRepository>(); services.AddScoped<IRoleRepository, RoleRepository>(); services.AddScoped<ILoggingRepository, LoggingRepository>(); // Services services.AddScoped<IMembershipService, MembershipService>(); services.AddScoped<IEncryptionService, EncryptionService>(); // new repos services.AddScoped<IMatchService, MatchService>(); services.AddScoped<IMatchRepository, MatchRepository>(); services.AddScoped<IMatchBetRepository, MatchBetRepository>(); services.AddScoped<ITeamRepository, TeamRepository>(); services.AddScoped<IFootballAPI, FootballAPIService>(); 这允许这样的事情: [Route("api/[controller]")] public class MatchController : AuthorizedController { private readonly IMatchService _matchService; …

8
等待异步Void方法调用进行单元测试
我有一个看起来像这样的方法: private async void DoStuff(long idToLookUp) { IOrder order = await orderService.LookUpIdAsync(idToLookUp); // Close the search IsSearchShowing = false; } //Other stuff in case you want to see it public DelegateCommand<long> DoLookupCommand{ get; set; } ViewModel() { DoLookupCommand= new DelegateCommand<long>(DoStuff); } 我正在尝试像这样进行单元测试: [TestMethod] public void TestDoStuff() { //+ Arrange myViewModel.IsSearchShowing …

6
Python unittest传递参数
在python中,我如何将命令行中的参数传递给unittest函数。这是到目前为止的代码……我知道这是错误的。 class TestingClass(unittest.TestCase): def testEmails(self): assertEqual(email_from_argument, "my_email@example.com") if __name__ == "__main__": unittest.main(argv=[sys.argv[1]]) email_from_argument = sys.argv[1]

5
如何编写Rust单元测试以确保发生恐慌?
我有一个panic在某些情况下处于工作状态的Rust函数,我希望编写一个测试用例来验证该函数是否惊慌。除了assert!和assert_eq!宏,我什么也找不到。有测试这种情况的机制吗? 我可以产生一个新任务,并检查该任务是否紧急。是否有意义? 返回aResult<T, E>不适合我的情况。 我希望在我正在实现Add的Matrix类型中增加对特征的支持。这种添加的理想语法如下: let m = m1 + m2 + m3; 其中m1,m2,m3都是矩阵。因此,的结果类型add应为Matrix。像下面这样的东西太神秘了: let m = ((m1 + m2).unwrap() + m3).unwrap() 同时,该add()功能需要验证所添加的两个矩阵的维数相同。因此,add()如果尺寸不匹配,则需要惊慌。可用的选项是panic!()。

1
_servicename_中的下划线在AngularJS测试中意味着什么?
在下面的示例测试中,原始提供程序名称为APIEndpointProvider,但是对于注入和服务实例化,似乎必须使用下划线将其注入。这是为什么? 'use strict'; describe('Provider: APIEndpointProvider', function () { beforeEach(module('myApp.providers')); var APIEndpointProvider; beforeEach(inject(function(_APIEndpointProvider_) { APIEndpointProvider = _APIEndpointProvider_; })); it('should do something', function () { expect(!!APIEndpointProvider).toBe(true); }); }); 我缺少更好的解释的约定是什么?

7
Mockito,JUnit和Spring
我直到今天才开始了解Mockito。我写了一些简单的测试(使用JUnit,请参见下文),但是我不知道如何在Spring的托管bean中使用模拟对象。什么是使用Spring的最佳实践。我应该如何向我的bean注入模拟依赖项? 您可以跳过这一步,直到回到我的问题。 首先,我学到了什么。这是一篇很好的文章Mocks Are n't Stubs,它解释了基础知识(Mock的检查行为验证而不是状态验证)。然后在这里有一个很好的例子Mockito 和这里更容易用嘲笑嘲笑。我们必须解释是的Mockito的模拟对象都是模拟和存根。 这里的Mockito这里匹配器,你可以找到更多的例子。 这个测试 @Test public void testReal(){ List<String> mockedList = mock(List.class); //stubbing //when(mockedList.get(0)).thenReturn("first"); mockedList.get(anyInt()); OngoingStubbing<String> stub= when(null); stub.thenReturn("first"); //String res = mockedList.get(0); //System.out.println(res); //you can also verify using argument matcher //verify(mockedList).get(anyInt()); verify(mockedList); mockedList.get(anyInt()); } 效果很好。 回到我的问题。这里有人将Mockito模拟注入Spring Bean中,有人尝试使用Springs ReflectionTestUtils.setField(),但是这里我们建议使用Spring Integration Tests,创建Mock对象来更改Spring的上下文。 我不太了解最后两个链接...有人可以向我解释Spring对Mockito有什么问题吗?这个解决方案怎么了? @InjectMocks private MyTestObject …

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.