Questions tagged «unit-testing»

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

2
如何在Kotlin中管理单元测试资源,例如启动/停止数据库连接或嵌入式Elasticsearch服务器?
在我的Kotlin JUnit测试中,我想启动/停止嵌入式服务器并在测试中使用它们。 我尝试@Before在测试类中的方法上使用JUnit批注,它可以正常工作,但这不是正确的行为,因为它运行每个测试用例,而不是运行一次。 因此,我想@BeforeClass在方法上使用批注,但是将其添加到方法中会导致错误,提示它必须在静态方法上。Kotlin似乎没有静态方法。然后,这同样适用于静态变量,因为我需要保留对嵌入式服务器的引用,以便在测试用例中使用。 那么,如何为所有测试用例一次创建一个嵌入式数据库? class MyTest { @Before fun setup() { // works in that it opens the database connection, but is wrong // since this is per test case instead of being shared for all } @BeforeClass fun setupClass() { // what I want to do instead, but …

11
关于在浏览器中测试extjs代码的任何建议,最好是使用硒?
我们一直在成功地使用硒来进行高级网站测试(除了在模块级别进行广泛的python doctest之外)。但是现在我们在很多页面上都使用了extjs,事实证明很难将Selenium测试用于网格等复杂组件。 有没有人成功为基于extjs的网页编写自动化测试?大量谷歌搜索发现存在类似问题的人,但答案却很少。谢谢!


7
如何用模拟模拟只读属性?
您如何使用模拟模拟只读属性? 我试过了: setattr(obj.__class__, 'property_to_be_mocked', mock.Mock()) 但问题在于它随后适用于该类的所有实例...这破坏了我的测试。 您还有其他想法吗?我不想模拟整个对象,而只是模拟这个特定的属性。

8
如何对依赖ActivatedRoute的参数的组件进行单元测试?
我正在对用于编辑对象的组件进行单元测试。该对象具有唯一性id,该唯一性用于从服务中托管的对象数组中获取特定对象。具体id是通过经由路由传递的参数采购,特别是通过ActivatedRoute类。 构造函数如下: constructor(private _router:Router, private _curRoute:ActivatedRoute, private _session:Session) { } ngOnInit() { this._curRoute.params.subscribe(params => { this.userId = params['id']; this.userObj = this._session.allUsers.filter(user => user.id.toString() === this.userId.toString())[0]; 我想在此组件上运行基本的单元测试。但是,我不确定如何注入id参数,并且组件需要此参数。 顺便说一句:我已经对该Session服务进行了模拟,因此不用担心。

5
断言在Python单元测试中已调用方法
假设我在Python单元测试中具有以下代码: aw = aps.Request("nv1") aw2 = aps.Request("nv2", aw) 有没有一种简单的方法可以断言aw.Clear()在测试的第二行期间调用了特定方法(在我的情况下)?例如是否有这样的事情: #pseudocode: assertMethodIsCalled(aw.Clear, lambda: aps.Request("nv2", aw))

8
如何告诉py.test跳过某些目录?
我试图使用norecursedirssetup.cfg中的选项来告诉py.test不要从某些目录中收集测试,但是似乎确实忽略了它。 [tool:pytest] norecursedirs=lib/third 当我运行时,py.test我确实看到它如何从内部进行测试lib/third!

11
在Kotlin中测试预期的异常
在Java中,程序员可以为JUnit测试用例指定预期的异常,如下所示: @Test(expected = ArithmeticException.class) public void omg() { int blackHole = 1 / 0; } 我将如何在Kotlin中做到这一点?我尝试了两种语法变体,但没有一个起作用: import org.junit.Test // ... @Test(expected = ArithmeticException) fun omg() Please specify constructor invocation; classifier 'ArithmeticException' does not have a companion object @Test(expected = ArithmeticException.class) fun omg() name expected ^ ^ expected ')'

6
开玩笑:禁用单元测试中的控制台的更好方法
我不知道是否有更好的方式禁用错误控制台 里面一个特定的玩笑测试(即,恢复原来的控制台/前每次测试后)。 这是我目前的方法: describe("Some description", () => { let consoleSpy; beforeEach(() => { if (typeof consoleSpy === "function") { consoleSpy.mockRestore(); } }); test("Some test that should not output errors to jest console", () => { expect.assertions(2); consoleSpy = jest.spyOn(console, "error").mockImplementation(); // some function that uses console error expect(someFunction).toBe("X"); expect(consoleSpy).toHaveBeenCalled(); }); …

9
在大型Rails应用程序中加速RSpec测试
我的RSpec测试中有一个带有2000多个示例的Rails应用程序。不用说,这是一个很大的应用程序,还有很多需要测试的地方。此时运行这些测试的效率非常低,并且由于需要花费很长时间,因此在推动新版本之前,我们几乎不鼓励编写这些测试。我在自己的spec.opts文件中添加了--profile文件,以查找运行时间最长的示例,其中至少有10个示例平均需要运行10秒。在您的RSpec专家中这正常吗?10秒对于一个例子来说完全太长吗?我意识到,使用2,000个示例,将需要花费很短的时间来彻底测试所有内容-但此时4个小时有点荒谬。 您看到最长的运行示例是什么样的时间?我该怎么做才能解决现有规格问题,从而找出瓶颈并加快速度。在这一点上,每分钟确实会有所帮助。

4
RSpec:let和before块有什么区别?
let和beforeRSpec中的块有什么区别? 以及何时使用它们? 在下面的示例中,什么是更好的方法(之前或之后)? let(:user) { User.make !} let(:account) {user.account.make!} before(:each) do @user = User.make! @account = @user.account.make! end 我研究了这个stackoverflow帖子 但是像上面这样定义允许关联的东西好吗?

16
@BeforeClass和继承-执行顺序
我有一个抽象基类,用作我的单元测试(TestNG 5.10)的基础。在该类中,我将初始化测试的整个环境,设置数据库映射等。此抽象类具有一个带有@BeforeClass注释的方法,该方法可以进行初始化。 接下来,我用具有@Test方法以及@BeforeClass方法的特定类扩展该类。这些方法对环境进行类特定的初始化(例如,将一些记录放入数据库中)。 如何执行带@BeforeClass注释的方法的特定顺序?我需要先执行抽象基类中的那些,然后再执行扩展类中的那些。 例: abstract class A { @BeforeClass doInitialization() {...} } class B extends A { @BeforeClass doSpecificInitialization() {...} @Test doTests() {...} } 预期订单: A.doInitialization B.doSpecificInitialization B.doTests 实际订单: B.doSpecificInitialization // <- crashes, as the base init is missing (A.doInitialization // <---not executed B.doTests) // <-/

3
如何使用Moq框架模拟ModelState.IsValid?
我正在检 ModelState.IsValid入创建这样的Employee的控制器操作方法: [HttpPost] public virtual ActionResult Create(EmployeeForm employeeForm) { if (this.ModelState.IsValid) { IEmployee employee = this._uiFactoryInstance.Map(employeeForm); employee.Save(); } // Etc. } 我想使用Moq Framework在我的单元测试方法中模拟它。我试图这样模拟它: var modelState = new Mock<ModelStateDictionary>(); modelState.Setup(m => m.IsValid).Returns(true); 但这在我的单元测试用例中引发了异常。有谁可以帮我离开这里吗?



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.