- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类,假设它名为 Foo
,我没有在其中定义相等运算符,我也不想定义一个(出于我自己的原因)。
我想测试一些操作 Foo 的函数,我写了下面的代码:
inline bool operator==(const Foo& left, const Foo& right)
{
// here I test my equality condition....
}
TEST(SomeTestCase, SomeTest)
{
Foo expected = ...
Foo actual = ...
ASSERT_EQ(expected, actual); // does NOT compile
ASSERT_TRUE(expected == actual); // compiles without a problem
}
有人知道如何编译 ASSERT_EQ,以便在失败的情况下打印有意义的错误消息吗?
我正在使用 MSVC2012,错误信息是:
1>D:\3rdpartycache\CPP\gmock\1.6.0-2\sdk\gtest\include\gtest/gtest.h(1316): error C2784: 'bool testing::internal::operator ==(T *,const testing::internal::linked_ptr<T> &)' : could not deduce template argument for 'T *' from 'const Foo'
1> D:\3rdpartycache\CPP\gmock\1.6.0-2\sdk\gtest\include\gtest/internal/gtest-linked_ptr.h(213) : see declaration of 'testing::internal::operator =='
1> D:\3rdpartycache\CPP\gmock\1.6.0-2\sdk\gtest\include\gtest/gtest.h(1353) : see reference to function template instantiation 'testing::AssertionResult testing::internal::CmpHelperEQ<T1,T2>(const char *,const char *,const T1 &,const T2 &)' being compiled
1> with
1> [
1> T1=Foo,
1> T2=Foo
1> ]
1> OperationsOnFooTest.cpp(146) : see reference to function template instantiation 'testing::AssertionResult testing::internal::EqHelper<lhs_is_null_literal>::Compare<Foo,T>(const char *,const char *,const T1 &,const T2 &)' being compiled
1> with
1> [
1> lhs_is_null_literal=false,
1> T=Foo,
1> T1=Foo,
1> T2=Foo
1> ]
1> OperationsOnFooTest.cpp(146) : see reference to function template instantiation 'testing::AssertionResult testing::internal::EqHelper<lhs_is_null_literal>::Compare<Foo,T>(const char *,const char *,const T1 &,const T2 &)' being compiled
1> with
1> [
1> lhs_is_null_literal=false,
1> T=Foo,
1> T1=Foo,
1> T2=Foo
1> ]
最佳答案
尝试验证您的 operator== 和 Foo 类是否在同一个命名空间中。我遇到了类似的错误,并以这种方式解决。
你对 ASSERT_EQ 编译错误消息的看法是正确的......但并不是很有帮助......
关于c++ - 谷歌测试 ASSERT_EQ 不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18041345/
我在几个地方看到了 assert_eq!(a, b, ),我不太习惯用宏来区分 assert_eq!(a, b) 通过查看代码。谁能解释一下两者之间是否有区别? 最佳答案 Rust 允许在很多地方使用
我正在将 LEDDriver 的一些 C 测试代码重写为 Rust。 struct LEDDriver { address: &'a mut u32, } impl LEDDriver {
我已经编写了一些测试,其中我需要断言两个数组相等。一些数组是 [u8; 48] 而其他的是[u8; 188]: #[test] fn mul() { let mut t1: [u8; 48]
我已经编写了一些测试,其中我需要断言两个数组相等。一些数组是 [u8; 48] 而其他的是[u8; 188]: #[test] fn mul() { let mut t1: [u8; 48]
我有一个类,假设它名为 Foo,我没有在其中定义相等运算符,我也不想定义一个(出于我自己的原因)。 我想测试一些操作 Foo 的函数,我写了下面的代码: inline bool operator==(
我正在为语言分词器编写一些测试,并将分词器生成的分词的 JSON 序列化版本与已知良好分词的序列化进行比较。所以我有一些这样的测试: #[test] fn test_tokenize() {
我在我的代码中使用了新的通用转换特征,但体验到的人体工学效果有所下降。有问题的代码实现了 AsRef for [Ascii]正如您在示例中所见。 现在我想使用 v.as_ref()在assert_eq
这是 Rust 的 assert_eq! macro implementation .为了简洁起见,我只复制了第一个分支: macro_rules! assert_eq { ($left:ex
我有一个自定义聚合模板类型,我正尝试使用 gtest 对其进行测试。我正在使用 TYPED_TEST_P,并测试各种类型。它工作正常,直到我尝试做 boolean 类型。我收到以下“错误” error
我正在使用最新的 gtest。以下代码编译失败: Error_code rc = some_function(); ASSERT_EQ(OK, rc); Error_code 是一个枚举类型定义: t
assert!(a == b) 比 assert_eq!(a, b) 占用更少的字符,而且在我看来,它更具可读性。 错误信息大致相同: thread 'main' panicked at 'asser
我是一名优秀的程序员,十分优秀!