我知道我如何使用这些术语,但我想知道是否有单独测试的伪造,模拟和存根的可接受定义?你如何为你的测试定义这些?描述您可能使用每种情况的情况.
以下是我如何使用它们:
假:一个实现接口但包含固定数据而没有逻辑的类.根据实施情况,简单地返回"好"或"坏"数据.
Mock:一个实现接口的类,允许动态设置值以返回/异常从特定方法抛出,并提供检查是否已调用/未调用特定方法的功能.
存根:类似于模拟类,但它不提供验证方法是否已被调用/未调用的能力.
模拟和存根可以由模拟框架手动生成或生成.伪造的类是手工生成的.我主要使用模拟来验证我的类和依赖类之间的交互.一旦我验证了交互并且正在通过我的代码测试备用路径,我就会使用存根.我主要使用假类来抽象出数据依赖性,或者每次使用模拟/存根都太繁琐.
验收测试和功能测试之间的真正区别是什么?
每个的亮点或目标是什么?我读到的每个地方都模糊不清.
功能测试和集成测试是否相同?
您通过单元测试开始测试,然后在完成单元测试后,您将进行集成测试,从而对整个系统进行测试.功能测试与集成测试相同吗?您仍然将整个系统作为一个整体并对其进行功能一致性测试.
从Android Studio 1.1rc开始,有单元测试支持,我想知道Android Instrumentation测试和单元测试之间有什么区别.
据我了解:
单元测试对于测试不调用Android API的代码非常有用,而Android测试测试则是集成测试,用于测试Android API特定元素或GUI组件.
但是,如果你在单元测试中使用像Robolectric或Mockito这样的框架,你可以测试Android代码(不需要设备)如果我没有弄错的话.
这是正确的,还是有更大的区别?如果是这样,每个人的用途是什么?
testing android integration-testing unit-testing android-studio
我最近听说过单元测试的功能测试.
我知道单元测试从最原子的形式测试给定代码片段的每种可能性.但功能测试怎么样?
这听起来像只测试代码是否有效,但它是否像单元测试一样可靠?
我被告知有两个关于这个问题的学校.某些人更喜欢单元测试,其他人更喜欢功能测试.
有没有什么好的资源,链接,书籍,任何参考文献或者你们中的任何一个能够解释和完善我的主题的人?
谢谢!
我正在努力弄清楚应该从功能测试中排除什么(在我的情况下,使用Rails,但我想框架可能无关紧要).
我的印象是我不应该使用功能测试来处理将在单元测试中捕获的内容 - 例如检查字段不能包含太多字符,或者字段不能为空.如果是这种情况,应该通过功能测试来测试哪些突发事件,和/或将其他人仅用于单元测试的经验法则是什么?
或者这种印象一开始是不正确的?
功能测试和端到端测试有什么区别?
Techopedia说端到端测试是
用于测试应用程序流程是否按照设计从头到尾执行的方法.执行端到端测试的目的是识别系统依赖性并确保在各种系统组件和系统之间传递正确的信息.
Techopedia还说了以下关于功能测试:
功能测试是在软件开发中使用的软件测试过程,其中测试软件以确保其符合所有要求.功能测试是一种检查软件的方法,以确保它具有在其功能要求中指定的所有必需功能.
阅读完上述两段后,我仍然对它们之间的区别感到困惑.
我有一个接受请求的node.js应用程序,然后解析请求,然后将解析后的数据发送到数据库.
requests parse requests and send data to the database
Client ---------> node.js app --------------------------------------------> Database
Run Code Online (Sandbox Code Playgroud)
如何为我提到的node.js应用程序编写端到端测试和功能测试?
我认为在两种类型的测试中,我都应该将node.js应用程序视为黑盒子.并向它发送请求.然后检查黑匣子的输出是否正确.
在我看来,功能测试和端到端测试之间没有区别.
在阅读了关于在 Python 中测试私有方法的内容后,具体参考以下接受的答案:如何对方法对象中的方法进行单元测试?,看来最好只测试公共接口。但是,我的班级看起来像这样:
class MyClass:
def __init__(self):
# init code
def run(self):
self.__A()
self.__B()
self.__C()
self.__D()
def __A(self):
# code for __A
def __B(self):
# code for __B
def __C(self):
# code for __C
def __D(self):
# code for __D
Run Code Online (Sandbox Code Playgroud)
本质上,我创建了一个类,用于通过函数管道处理一些输入数据。在这种情况下,最好测试私有函数而不测试公共run()函数吗?做这个的最好方式是什么?
使用Spring + Hibernate和事务注释.
我正在尝试测试以下内容:
@Transactional服务方法来持久化它我遇到的第一个问题是在步骤2中读取User对象,只返回Hibernate 1级缓存中的那个,并且实际上没有从数据库中读取.
因此,我使用Session手动从缓存中驱逐对象以强制从数据库读取.但是,当我这样做时,对象值永远不会在单元测试中持久存在(我知道在测试完成后它会因为我指定的设置而回滚).
我尝试在调用@Transactionalservice方法后手动刷新会话,并且DID提交更改.但是,这不是我的预期.我认为@Transactional服务方法可以确保事务已提交并且会话在返回之前刷新.我知道Spring一般会决定何时进行这种管理,但我认为方法中的"工作单元" @Transactional就是这种方法.
无论如何,现在我想弄清楚我将如何测试@Transactional一般的方法.
这是一个失败的junit测试方法:
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TransactionConfiguration(transactionManager = "userTransactionManager", defaultRollback = true)
@WebAppConfiguration()
@ContextConfiguration(locations = { "classpath:test-applicationContext.xml",
"classpath:test-spring-servlet.xml",
"classpath:test-applicationContext-security.xml" })
public class HibernateTest {
@Autowired
@Qualifier("userSessionFactory")
private SessionFactory sessionFactory;
@Autowired
private UserService userService;
@Autowired
private PaymentService paymentService;
@Autowired
private QueryService queryService;
@Autowired
private NodeService nodeService;
@Autowired
private UserUtils userUtils;
@Autowired
private UserContext userContext;
@Test
public void testTransactions() {
// read the user …Run Code Online (Sandbox Code Playgroud) spring hibernate sessionfactory transactional transactionmanager
嘿,我在Delphi XE3中的单元测试有问题我有一个项目,包含1个MDIForm和分配MDIChild表单然后问题是,当我在我的MDIChild表单上运行测试时,我收到此错误:
TestAllDataSrouces: EInvalidOperation
at $0064346F
SetUp FAILED: Cannot create form. No MDI forms are currently active
Run Code Online (Sandbox Code Playgroud)
我的安装方法如下所示:
procedure TestTCustomerCard.SetUp;
begin
FCustomerCard := TCustomerCard.Create(Application);
end;
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个错误?到目前为止我试过:
FCustomerCard := TCustomerCard.Create(Application.MainForm);
FCustomerCard := TCustomerCard.Create(nil);
Run Code Online (Sandbox Code Playgroud)
和
procedure TestTCustomerCard.SetUp;
var
a : TForm;
begin
a := TForm.Create(nil);
a.FormStyle := fsMDIForm;
FCustomerCard := TCustomerCard.Create(a);
end;
Run Code Online (Sandbox Code Playgroud)
我的测试是:
procedure TestTCustomerCard.TestAllDataSrouces;
var
I: Integer;
begin
for I := 0 to FCustomerCard.ComponentCount-1 do
begin
if (FCustomerCard.Components[i] is TcxLookupComboBox) then
begin
Check(TcxLookupComboBox(FCustomerCard.Components[i]).Properties.ListSource = nil,'Error no ListSource, Lookup: '+TcxLookupComboBox(FCustomerCard.Components[i]).Name+' Parent: '+TcxLookupComboBox(FCustomerCard.Components[i]).Parent.Name); …Run Code Online (Sandbox Code Playgroud) 我今天开始在 PhpStorm 上使用 PHPUnit 测试。我可以测试几乎所有的功能,除了需要数据库连接的功能。
功能:
public function getProductID()
{
$this->product_id = $this->db->GetOne("select product_id from table1 where id = {$this->id}");
return $this->product_id['product_id'];
}
Run Code Online (Sandbox Code Playgroud)
在我的测试用例中,出现错误:
PHP 致命错误:在 null 上调用成员函数 GetOne()
我已经定义:
global $_db;
$this->db = $_db;
Run Code Online (Sandbox Code Playgroud) unit-testing ×8
testing ×4
mocking ×2
.net ×1
android ×1
definition ×1
delphi ×1
delphi-xe3 ×1
dunit ×1
end-to-end ×1
hibernate ×1
mdi ×1
php ×1
phpunit ×1
python ×1
spring ×1
stub ×1
terminology ×1