diff --git a/dlls/riched20/tests/Makefile.in b/dlls/riched20/tests/Makefile.in
index 9690e5ea2141e7012431105706491e4c3c347944..1f26e315bdb6ee93af001f0dd2485c25a1e9ac07 100644
--- a/dlls/riched20/tests/Makefile.in
+++ b/dlls/riched20/tests/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 TESTDLL   = riched20.dll
-IMPORTS   = ole32 user32 gdi32 kernel32
+IMPORTS   = ole32 oleaut32 user32 gdi32 kernel32
 
 CTESTS = \
 	editor.c \
diff --git a/dlls/riched20/tests/txtsrv.c b/dlls/riched20/tests/txtsrv.c
index 37323776922732a934e6a352576644cc4f301042..0714535768819f688541880671b2f8407b1d3900 100644
--- a/dlls/riched20/tests/txtsrv.c
+++ b/dlls/riched20/tests/txtsrv.c
@@ -31,6 +31,7 @@
 #include <initguid.h>
 #include <textserv.h>
 #include <wine/test.h>
+#include <oleauto.h>
 
 static HMODULE hmoduleRichEdit;
 
@@ -641,6 +642,30 @@ static void test_TxGetText(void)
     CoTaskMemFree(dummyTextHost);
 }
 
+static void test_TxSetText(void)
+{
+    HRESULT hres;
+    BSTR rettext;
+    WCHAR settext[] = {'T','e','s','t',0};
+
+    if (!init_texthost())
+        return;
+
+    hres = ITextServices_TxSetText(txtserv, settext);
+    todo_wine ok(hres == S_OK, "ITextServices_TxSetText failed\n");
+
+    hres = ITextServices_TxGetText(txtserv, &rettext);
+    todo_wine ok(hres == S_OK, "ITextServices_TxGetText failed\n");
+
+    todo_wine ok(SysStringLen(rettext) == 4,
+                 "String returned of wrong length\n");
+    todo_wine ok(memcmp(rettext,settext,SysStringByteLen(rettext)) == 0,
+                 "String returned differs\n");
+
+    IUnknown_Release(txtserv);
+    CoTaskMemFree(dummyTextHost);
+}
+
 START_TEST( txtsrv )
 {
     setup_thiscall_wrappers();
@@ -656,6 +681,7 @@ START_TEST( txtsrv )
         CoTaskMemFree(dummyTextHost);
 
         test_TxGetText();
+        test_TxSetText();
     }
     if (wrapperCodeMem) VirtualFree(wrapperCodeMem, 0, MEM_RELEASE);
 }