-
Notifications
You must be signed in to change notification settings - Fork 15
Debug Unit Test #27
Comments
I am back:) The debugger now works for debugging an executable. You set the executable in the launch file and (SDE adds sources file infos for you in (swift-)lldb), so you can stop when run. The whole work is just the UI remapping for (swift-)lldb work flow. I have not examined the case of swift test. And further, the debug side are not well tested(there may be bugs around). I will feedback some idea after investigation for me. |
Any news? |
@TofPlay sorry. Recently, I am back to some big data thing and job hunting:) In fact, I find nothing new for "swift test". for example, we use official example repo: https://github.com/apple/example-package-fisheryates when first run "swift test" in shell, we have swift test 1 ↵
Compile Swift Module 'FisherYatesPackageTests' (1 sources)
Linking ./.build/debug/FisherYatesPackageTests.xctest
Test Suite 'All tests' started at 10:36:19.783
Test Suite 'debug.xctest' started at 10:36:19.785
Test Suite 'FisherYatesShuffleTest' started at 10:36:19.785
Test Case 'FisherYatesShuffleTest.testShuffle' started at 10:36:19.785
Test Case 'FisherYatesShuffleTest.testShuffle' passed (0.015 seconds)
Test Suite 'FisherYatesShuffleTest' passed at 10:36:19.801
Executed 1 test, with 0 failures (0 unexpected) in 0.015 (0.015) seconds
Test Suite 'debug.xctest' passed at 10:36:19.801
Executed 1 test, with 0 failures (0 unexpected) in 0.015 (0.015) seconds
Test Suite 'All tests' passed at 10:36:19.801
Executed 1 test, with 0 failures (0 unexpected) in 0.015 (0.015) seconds
note: as from output, we know the executable linked to ./.build/debug/FisherYatesPackageTests.xctest, then config launch.json in vscode like this: // Use IntelliSense to learn about possible Mock debug attributes.
// Hover to view descriptions of existing attributes.
{
"version": "0.2.0",
"configurations": [
{
"type": "swift-debug",
"request": "launch",
"name": "Swift Program Debug",
"program": "${workspaceRoot}/.build/debug/FisherYatesPackageTests.xctest"
}
]
} set a breakpoint in the source like FisherYatesShuffleTest.swift here. click "Start Debugging" button, then we get this: note: the silly display <could not... assumed to be a bug of swift's lldb in Linux as I mentioned in README. it seems system header file loading problem. The workaround is to use log helper. I admit this bug makes debugging largely broken. But... 😦 |
note: change one line in test drvier LinuxMain.swift => @testable import FisherYatesTests to make the "swift test" passed. This seem an obvious bug of example for swift 3.1. |
@jinmingjian when I try to debug it does not work and I have the following message in the window "OUTPUT"
Update: If I put a break point on |
the output may say the language serve has problem. But the debugging functionalities are only related to the debug server other than the language server. May the debug server crash? Can you show your some codes for reproducing? |
I can't give you some codes of my project. The project is closed source but is really basic. Here a pseudo environment identical to mine. I hope this will help: Environment:
Run Folders:
launch.json for VSCode: // Use IntelliSense to learn about possible Mock debug attributes.
// Hover to view descriptions of existing attributes.
{
"version": "0.2.0",
"configurations": [
{
"type": "swift-debug",
"request": "launch",
"name": "Swift Program Debug",
"program": "${workspaceRoot}/.build/debug/MyFrameworkPackageTests.xctest"
}
]
} LinuxMain.swift: import XCTest
@testable import MyFrameworkTests
// Break point work here
XCTMain([
testCase(MyFrameworkBasicTests.allTests),
]) MyFrameworkBasicTests.swift: import XCTest
@testable import MyFramework
class MyFrameworkBasicTests: XCTestCase {
static var allTests : [(String, (MyFrameworkBasicTests) -> () throws -> Void)] {
// Break point work here
return [
("test_01", test_01),
("test_02", test_02)
]
}
func test_01() {
// Break point doesn't work here
// Some codes
}
func test_02() {
// Break point doesn't work here
// Some codes
}
} |
For unit test we launch
Now I want to debug (put breakpoints and check variables) the units tests how I have to set VSCode?
The text was updated successfully, but these errors were encountered: