Questions tagged «unit-testing»

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

7
Android Studio单元测试:读取数据(输入)文件
在单元测试中,如何在不对路径进行硬编码的情况下从(桌面)文件系统上的json文件读取数据? 我想从文件中读取测试输入(用于我的解析方法),而不是创建静态字符串。 该文件与我的单元测试代码位于同一位置,但是如果需要,我也可以将其放置在项目中的其他位置。我正在使用Android Studio。

11
串行执行单元测试(而不是并行执行)
我试图对我编写的WCF主机管理引擎进行单元测试。引擎基本上是根据配置动态创建ServiceHost实例。这使我们能够动态地重新配置哪些服务可用,而不必关闭所有服务并在添加新服务或删除旧服务时重新启动它们。 但是,由于ServiceHost的工作方式,在对该主机管理引擎进行单元测试时遇到了困难。如果已经为特定的端点创建,打开了一个ServiceHost,但尚未关闭它,则无法为该端点创建另一个ServiceHost,从而导致异常。由于现代单元测试平台可以并行执行其测试执行,因此我没有有效的方法来对这段代码进行单元测试。 我曾经使用过xUnit.NET,希望由于它的可扩展性,我可以找到一种方法来强制其顺序运行测试。但是,我没有任何运气。我希望有人在SO上遇到类似的问题,并且知道如何使单元测试连续运行。 注意:ServiceHost是由Microsoft编写的WCF类。我没有能力更改其行为。仅将每个服务端点托管一次也是一种正确的行为……但是,这特别不利于单元测试。

7
具有动态测试数量的JUnit测试
在我们的项目中,我有几个JUnit测试,例如从目录中获取每个文件并对其进行测试。如果我在中实现了一种testEveryFileInDirectory方法,则TestCase显示为仅一个可能失败或成功的测试。但是我对每个文件的结果都很感兴趣。如何编写一个TestCase/ TestSuite,使每个文件显示为单独的测试,例如在Eclipse的图形TestRunner中?(为每个文件编写显式测试方法不是一种选择。) 还将问题ParameterizedTest与Eclipse Testrunner中的名称进行比较。

3
使用命令行从JUnit类运行单个测试
我试图找到一种方法,使我可以仅使用命令行和Java从JUnit类运行单个测试。 我可以使用以下命令从该类运行整套测试: java -cp .... org.junit.runner.JUnitCore org.package.classname 我真正想做的是这样的: java -cp .... org.junit.runner.JUnitCore org.package.classname.method 要么: java -cp .... org.junit.runner.JUnitCore org.package.classname#method 我注意到可能有使用JUnit批注执行此操作的方法,但我希望不要手动修改测试类的源(尝试自动执行此操作)。我也确实看到Maven可以做到这一点,但是如果可能的话,我想避免依赖于Maven。 所以我想知道是否有任何方法可以做到这一点? 我要寻找的重点: 能够从JUnit测试类运行单个测试 命令行(使用JUnit) 避免修改测试源 避免使用其他工具

8
如何为Junit单元测试设置JVM参数?
我有一些Junit单元测试,需要大量的堆空间才能运行-即1G。(他们测试了一个Webstart应用程序的内存密集型功能,该功能仅在具有足够的堆空间的情况下运行,并且将在Win 7 64位计算机上内部运行-因此,重新设计测试是不切实际的建议。) 我正在Intellij IDEA中进行开发,因此我知道可以为测试类设置JVM参数(例如-Xmx1024M)。但是,这仅用于运行整个测试类-如果我想运行单个测试,则必须为该测试方法重新创建运行配置。 另外,这些设置是特定于IDE和特定于盒的-因此,如果我切换盒(在多台计算机上开发)或我的一位同事尝试运行测试,则不会转移这些设置。(此外,我的同事使用了其他IDE(例如Eclipse和NetBeans)。)FWIW,我们正在使用Mercurial进行源代码控制。 在构建周期中,我们使用Maven,所以我知道如何为此指定JVM参数。 所以:-我正在寻找一种指定将适用于整个测试类和各个测试方法的JVM参数的方法;-我想在任何计算机上的IDE之间共享这些规范(已从存储库中获取了代码)。

30
找不到测试。确保已安装的测试发现者和执行者,平台和框架版本设置正确,然后重试
我正在将现有解决方案升级到.Net 4.6.1,并且无法在服务器构建期间运行我们的单元测试。它们在本地按预期方式运行,并将框架版本翻转回.Net 4.5.1使它们在服务器上再次运行。 我收到以下错误: 找不到测试。确保已安装的测试发现程序和执行程序,平台和框架版本设置正确,然后重试。 我在一个更简单的设置中重现了该问题: 一个带有两个测试的C#单元测试项目的解决方案(一个失败,一个通过)。 使用默认模板(TfvcTemplate.12.xaml)的XAML构建定义 安装了Visual Studio Enterprise 2015 Update 1的TFS 2015 Update 1 XAML生成服务器(具有六个类似的服务器,并且都产生相同的结果)

4
仅用Jest运行一项测试
很简单,我只想用Jest运行一个测试。 我放it.only或,describe.only但它仍然运行大量测试。我认为它可以运行自上次提交以来的所有测试,但它不应在only显式设置了标志的情况下就具有这种行为,对吗? 是什么导致此行为,以及如何运行单个测试?

4
为什么在比较结构时此断言会引发格式异常?
我试图断言两个System.Drawing.Size结构的相等性,并且我得到了格式异常,而不是预期的断言失败。 [TestMethod] public void AssertStructs() { var struct1 = new Size(0, 0); var struct2 = new Size(1, 1); //This throws a format exception, "System.FormatException: Input string was not in a correct format." Assert.AreEqual(struct1, struct2, "Failed. Expected {0}, actually it is {1}", struct1, struct2); //This assert fails properly, "Failed. Expected {Width=0, …

4
如何在Eclipse中轻松创建单元测试
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 改善这个问题 我只想通过选择方法来轻松创建单元测试。eclipse中是否有工具可以做到这一点。它应该支持模板。我应该能够创建正面测试和负面测试。

10
iOS-运行Swift单元测试时找不到'MyProject-Swift.h'文件
我正在尝试为我的项目设置单元测试。这是现有的Objective-C应用程序,最近我添加了一个Swift类。我已经设置了“ MyProject-Swift.h”和Swift桥接文件(“ MyProject”和“ MyProjectTest”),并且能够使用Objective-C和Swift代码很好地构建和运行该应用程序。 但是,现在我想在新的Swift类上运行一些单元测试。我设置了测试文件,它看起来如下所示: MySwiftClassTests.swift: import UIKit import XCTest import MyProject class MySwiftClassTests: XCTestCase { override func setUp() { super.setUp() // Put setup code here. This method is called before the invocation of each test method in the class. } override func tearDown() { // Put teardown code here. …

14
它应该是“安排—声明—行为—声明”吗?
关于Arrange-Act-Assert的经典测试模式,我经常发现自己在Act之前添加了反主张。这样,我知道传递的断言实际上是作为操作结果传递的。 我认为它类似于红色-绿色-重构中的红色,在红色-绿色-重构中,只有在测试过程中看到红色条时,我才知道绿色条表示我已经编写了有区别的代码。如果我编写了通过测试,那么任何代码都可以满足要求;类似地,对于“安排—断言—行为—断言”,如果我的第一个断言失败,我知道任何法案都会通过最终的断言,因此实际上并没有验证有关该法案的任何内容。 您的测试是否遵循这种模式?为什么或者为什么不? 更新说明:初始声明与最终声明实质上相反。这不是Arrange工作的断言;有人断言该法案尚未生效。

20
DeploymentItem属性存在问题
我目前正在维护用C#.net编写的“旧”系统,删除一些过时的功能并进行一些重构。谢谢上帝,以前的家伙写了一些单元测试(MSTests)。我对JUnit测试相当满意,但对MSTest并没有做太多事情。 测试方法具有一个DeploymentItem属性,该属性指定一个文本文件(该文件由要测试的业务逻辑方法解析)和第二个属性,DeploymentItem其中仅指定了一个路径,其中包含一堆也必须部署的TIF文件。 [TestMethod()] [DeploymentItem(@"files\valid\valid_entries.txt")] [DeploymentItem(@"files\tif\")] public void ExistsTifTest() { ... } 测试以前可以进行,但是现在我不得不更改\ files \ tif目录中包含的TIF文件的名称。根据规则,TIF文件名必须匹配某个模式,该模式也由该ExistsTifTest()方法检查。现在,我不得不更改文件名以使其适应新要求,并且突然之间,不再像以前那样部署TIF文件。 有人可以给我提示为什么会发生这种情况或可能是什么原因吗?如果在测试方法中具有相应DeploymentItem属性的\ files \ valid \目录中的“ valid_entries.txt”旁边添加一个新的文本文件,例如“ my2ndTest.txt”,也会发生相同的情况。文件未部署? 我现在通过直接在testrunco​​nfig中定义部署路径来部署映像,但是我想了解为什么会发生这些事情,或者为什么为什么我的新文件“ my2ndTest.txt”没有被部署,而其他文件却被部署了。

2
模拟HttpContext来对.NET核心MVC控制器进行单元测试?
我在单元测试的控制器中有一个函数,该函数期望http请求的标头中的值。我无法初始化HttpContext,因为它是只读的。 我的控制器函数期望“ device-id”的http请求标头值为 [TestMethod] public void TestValuesController() { ValuesController controller = new ValuesController(); //not valid controller.HttpContext is readonly //controller.HttpContext = new DefaultHttpContext(); var result = controller.Get(); Assert.AreEqual(result.Count(), 2); } 有没有使用第三方库的简单方法?



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.