mirror of
https://github.com/google/googletest.git
synced 2025-01-15 00:47:54 +08:00
Merge pull request #1206 from ShadowIce/methodname-in-exception
Add function name to exception if there's no default action
This commit is contained in:
commit
675686a139
@ -364,7 +364,7 @@ UntypedFunctionMockerBase::UntypedInvokeWith(const void* const untyped_args)
|
|||||||
|
|
||||||
if (!need_to_report_uninteresting_call) {
|
if (!need_to_report_uninteresting_call) {
|
||||||
// Perform the action without printing the call information.
|
// Perform the action without printing the call information.
|
||||||
return this->UntypedPerformDefaultAction(untyped_args, "");
|
return this->UntypedPerformDefaultAction(untyped_args, "Function call: " + std::string(Name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Warns about the uninteresting call.
|
// Warns about the uninteresting call.
|
||||||
|
@ -62,6 +62,12 @@ using testing::internal::CaptureStdout;
|
|||||||
using testing::internal::GetCapturedStdout;
|
using testing::internal::GetCapturedStdout;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Class without default constructor.
|
||||||
|
class NotDefaultConstructible {
|
||||||
|
public:
|
||||||
|
explicit NotDefaultConstructible(int) {}
|
||||||
|
};
|
||||||
|
|
||||||
// Defines some mock classes needed by the tests.
|
// Defines some mock classes needed by the tests.
|
||||||
|
|
||||||
class Foo {
|
class Foo {
|
||||||
@ -79,6 +85,7 @@ class MockFoo : public Foo {
|
|||||||
|
|
||||||
MOCK_METHOD0(DoThis, void());
|
MOCK_METHOD0(DoThis, void());
|
||||||
MOCK_METHOD1(DoThat, int(bool flag));
|
MOCK_METHOD1(DoThat, int(bool flag));
|
||||||
|
MOCK_METHOD0(ReturnNonDefaultConstructible, NotDefaultConstructible());
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
|
GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
|
||||||
@ -207,6 +214,22 @@ TEST(NiceMockTest, AllowsExpectedCall) {
|
|||||||
nice_foo.DoThis();
|
nice_foo.DoThis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tests that an unexpected call on a nice mock which returns a not-default-constructible
|
||||||
|
// type throws an exception and the exception contains the method's name.
|
||||||
|
TEST(NiceMockTest, ThrowsExceptionForUnknownReturnTypes) {
|
||||||
|
NiceMock<MockFoo> nice_foo;
|
||||||
|
#if GTEST_HAS_EXCEPTIONS
|
||||||
|
try {
|
||||||
|
nice_foo.ReturnNonDefaultConstructible();
|
||||||
|
FAIL();
|
||||||
|
} catch (const std::runtime_error& ex) {
|
||||||
|
EXPECT_THAT(ex.what(), HasSubstr("ReturnNonDefaultConstructible"));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
EXPECT_DEATH_IF_SUPPORTED({ nice_foo.ReturnNonDefaultConstructible(); }, "");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Tests that an unexpected call on a nice mock fails.
|
// Tests that an unexpected call on a nice mock fails.
|
||||||
TEST(NiceMockTest, UnexpectedCallFails) {
|
TEST(NiceMockTest, UnexpectedCallFails) {
|
||||||
NiceMock<MockFoo> nice_foo;
|
NiceMock<MockFoo> nice_foo;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user